From d8ee8bf058d6d1ef9f0d5b4fd98d7b12f582dc4f Mon Sep 17 00:00:00 2001 From: Joshua Lucas Date: Tue, 2 Sep 2025 16:42:46 -0500 Subject: [PATCH] Try to use l3keys. --- commonincludes.def | 2 + geometry.def | 42 --------------- packages/Boxout.sty | 4 +- packages/Caption.sty | 2 +- packages/Color.sty | 12 ++--- packages/Graphics.sty | 121 +++++++++++++++++++++++++++++++----------- packages/Header.sty | 4 +- packages/Layout.sty | 66 +++++++++++++++++++---- 8 files changed, 159 insertions(+), 94 deletions(-) delete mode 100644 geometry.def diff --git a/commonincludes.def b/commonincludes.def index 9199634..9b16ad4 100644 --- a/commonincludes.def +++ b/commonincludes.def @@ -1,3 +1,5 @@ +\ProvidesFile{commonincludes.def}[2025-09-02 v1.0] + \RequirePackage{PrimeTeX/packages/Boxout} \RequirePackage{PrimeTeX/packages/Caption} diff --git a/geometry.def b/geometry.def deleted file mode 100644 index bc4af1b..0000000 --- a/geometry.def +++ /dev/null @@ -1,42 +0,0 @@ -\ifthenelse{\boolean{isElectronic}}{ - \newgeometry{ - inner = 0.75in, - top = 66pt, % 11/12in - marginratio = 2:3, - } - \savegeometry{smallMargin} - \newgeometry{ - inner = 24pt, % 1/3in - top = 0.25in, - marginratio = 2:3, - } - \savegeometry{tinyMargin} -}{ - \newgeometry{ - twoside = true, - inner = 0.75in, - top = 66pt, % 11/12in - marginratio = 2:3, - } - \savegeometry{smallMargin} - \newgeometry{ - twoside = true, - inner = 24pt, % 1/3in - top = 0.25in, - marginratio = 2:3, - } - \savegeometry{tinyMargin} -} -\restoregeometry - -\NewDocumentEnvironment{SmallMargin}{O{0.0in} O{-0.25in}}{ - \clearpage - \loadgeometry{smallMargin} - \setlength{\insideheaderoffset}{#1} - \setlength{\outsideheaderoffset}{#2} - \pagestyle{fancy} -}{ - \clearpage - \pagestyle{fancy} - \restoregeometry -} \ No newline at end of file diff --git a/packages/Boxout.sty b/packages/Boxout.sty index 80f1490..8f8f84a 100644 --- a/packages/Boxout.sty +++ b/packages/Boxout.sty @@ -6,8 +6,8 @@ \RequirePackage{PrimeTeX/packages/Tables} \RequirePackage{calc} -\providelength{\boxoutpadding}[1em] -\providelength{\boxoutrule}[1pt] +\ProvideLength{\boxoutpadding}[1em] +\ProvideLength{\boxoutrule}[1pt] \NewTblrEnviron{tblrBoxout} \SetTblrInner[tblrBoxout]{ diff --git a/packages/Caption.sty b/packages/Caption.sty index 86fe54c..9583653 100644 --- a/packages/Caption.sty +++ b/packages/Caption.sty @@ -15,7 +15,7 @@ % Define a justification style that is ragged on the side toward the outside of % the page. I. e. RaggedRight on \RequirePackage{changepage} -%\RequirePackage{ifthen} + \DeclareCaptionJustification{RaggedOutside}{% \ifthenelse{\boolean{isElectronic}}{% \RaggedRight% diff --git a/packages/Color.sty b/packages/Color.sty index 0cc3a02..45c0508 100644 --- a/packages/Color.sty +++ b/packages/Color.sty @@ -7,7 +7,7 @@ \RequirePackage{xcolor} \definecolorset{HTML}{Prime}{}{% - Gray, 474c63;% #474c63 Blue, saturation -> 17% + Gray, 4d505d;% #4d505d Blue, saturation -> 10% Red, 91192d;% #91192d Tetradic Orange, 914119;% #914119 Split complementary Yellow, 917d19;% #917d19 Complementary @@ -22,7 +22,7 @@ % Lightness ≈ 18% \definecolorset{HTML}{PrimeDark}{}{% - Gray, 262836;% #262836 + Gray, 292b32;% #292b32 Red, 4e0d18;% #4e0d18 Orange, 4e230d;% #4e230d Yellow, 4e430d;% #4e430d @@ -37,7 +37,7 @@ % Lightness ≈ 49% \definecolorset{HTML}{PrimeBright}{}{% - Gray, 686f91;% #686f91 + Gray, 727587;% #727587 Red, d42542;% #d42542 Orange, d46025;% #d46025 Yellow, d4b725;% #d4b725 @@ -52,7 +52,7 @@ % Lightness ≈ 64% \definecolorset{HTML}{PrimeLight}{}{% - Gray, 9499b3;% #9499b3 + Gray, 9b9eac;% #9b9eac Red, e46378;% #e46378 Orange, e48f63;% #e48f63 Yellow, e4d063;% #e4d063 @@ -67,7 +67,7 @@ % Lightness ≈ 64% \definecolorset{HTML}{PrimePastel}{}{% - Gray, c2c5d4;% #c2c5d4 + Gray, c6c8d0;% #c6c8d0 Red, f0a6b2;% #f0a6b2 Orange, f0bfa6;% #f0bfa6 Yellow, f0e4a6;% #f0e4a6 @@ -82,7 +82,7 @@ % Lightness ≈ 95% \definecolorset{HTML}{PrimePale}{}{% - Gray, eff0f5;% #eff0f5 + Gray, f0f1f4;% #eff0f5 Red, fbe9ec;% #fbe9ec Orange, fbefe9;% #fbefe9 Yellow, fbf8e9;% #fbf8e9 diff --git a/packages/Graphics.sty b/packages/Graphics.sty index 9a8adf4..8559d99 100644 --- a/packages/Graphics.sty +++ b/packages/Graphics.sty @@ -7,10 +7,10 @@ \RequirePackage{wrapfig2} -\providelength{\iconsize}[0.25in] +\ProvideLength{\iconsize}[0.25in] -\providelength{\@InlineGraphicHeight}[12pt] -\providelength{\@InlineGraphicOffset}[-2pt] +\ProvideLength{\@InlineGraphicHeight}[12pt] +\ProvideLength{\@InlineGraphicOffset}[-2pt] \NewDocumentCommand{\InlineGraphic}{ O{\@InlineGraphicHeight} @@ -89,34 +89,95 @@ \RequirePackage{tabularray} -\providelength{\twinfigspace}[3pt] -\providelength{\twinfigwidth}[ - \textwidth / 2 + \bigfloatoverhang - \twinfigspace +\ProvideLength{\twinfigspace}[3pt] +\ProvideLength{\twinfigwidth}[ + \textwidth / 2 + \bigfloatoverhang * 3 / 2 - \twinfigspace ] +\ExplSyntaxOn + +\dim_new:N \l_twinfig_overhang +\dim_new:N \l_twinfig_width +\dim_new:N \l_twinfig_space +\fp_new:N \l_twinfig_offset +\str_new:N \l_twinfig_placement +\str_new:N \l_twinfig_valign + +\keys_define:nn{twinfig}{ + overhang .dim_set:N = \l_twinfig_overhang, + overhang .initial:e = \bigfloatoverhang, +} +\keys_define:nn{twinfig}{ + placement .str_set:N = \l_twinfig_placement, + placement .initial:n = {htpb},%\bigfloatplacement, +} +\keys_define:nn{twinfig}{ + offset .fp_set:N = \l_twinfig_offset, + offset .initial:n = {2.0},%\bigfloatoffsetratio, +} +\keys_define:nn{twinfig}{ + valign .str_set:N = \l_twinfig_valign, + valign .initial:n = {m}, +} +\keys_define:nn{twinfig}{ + width .dim_set:N = \l_twinfig_width, + width .initial:n = {3.14in},%\twinfigwidth, +} +\keys_define:nn{twinfig}{ + space .dim_set:N = \l_twinfig_space, + space .initial:n = {3pt},%\twinfigspace, +} + \keys_log:nn{twinfig}{overhang} + \keys_log:nn{twinfig}{placement} + \keys_log:nn{twinfig}{offset} + \keys_log:nn{twinfig}{valign} + \keys_log:nn{twinfig}{width} + \keys_log:nn{twinfig}{space} + +\typeout{\the\l_twinfig_overhang} +\typeout{\l_twinfig_placement} +\typeout{\fp_use:N \l_twinfig_offset} +\typeout{\l_twinfig_valign} +\typeout{\the\l_twinfig_width} +\typeout{\the\l_twinfig_space} + +\ProcessKeyOptions[twinfig] + \NewDocumentCommand{\twinfig}{% - % Big Float overhang. - O{\bigfloatoverhang} - % Float placement. - O{htpb} - % BigFloat offset ratio. - O{\bigfloatoffsetratio} - % First graphic file. + % #1: Big Float overhang. + %O{\bigfloatoverhang} + % #2: Float placement. + %O{htpb} + % #3: BigFloat offset ratio. + %O{\bigfloatoffsetratio} + % #1: Key=value options. + O{} + % #2: First graphic file. m - % First label. + % #3: First label. >{\TrimSpaces}m - % First caption. + % #4: First caption. >{\TrimSpaces}m - % Second graphic file. + % #5: Second graphic file. m - % Second label. + % #6: Second label. >{\TrimSpaces}m - % Second caption. + % #7: Second caption. >{\TrimSpaces}m + % #8: Image vertical alignment. + %O{m} }{% - \begin{BigFloat}[figure][#1][#2][#3]% + \keys_set:nn{twinfig}{#1}% + +\typeout{\the\l_twinfig_overhang} +\typeout{\l_twinfig_placement} +\typeout{\fp_use:N \l_twinfig_offset} +\typeout{\l_twinfig_valign} +\typeout{\the\l_twinfig_width} +\typeout{\the\l_twinfig_space} + \begin{BigFloat}[figure][\l_twinfig_overhang][\l_twinfig_placement][\l_twinfig_offset]% \begin{tblr}{% - colspec = {*{2}{Q[c,m,wd=\twinfigwidth]}},% + colspec = {*{2}{Q[c,\l_twinfig_valign,wd=\l_twinfig_width]}},% hlines = {0pt}, %vlines,% For debugging. Comment out when done. hborder{1,Z} = {% @@ -128,26 +189,26 @@ rightspace = 0pt,% },% vborder{2} = {% - leftspace = \twinfigspace,% - rightspace = \twinfigspace,% + leftspace = \l_twinfig_space,% + rightspace = \l_twinfig_space,% },% }% \vfill \captionsetup{type=figure}% \includegraphics[% - keepaspectratio,width=\twinfigwidth% - ]{#4}% - \captionof{figure}{#6}% - \label{fig:#5} + keepaspectratio,width=\l_twinfig_width% + ]{#2}% + \captionof{figure}{#4}% + \label{fig:#3} \vfill% &% \vfill \captionsetup{type=figure}% \includegraphics[% - keepaspectratio,width=\twinfigwidth% - ]{#7}% - \captionof{figure}{#9}% - \label{fig:#8} + keepaspectratio,width=\l_twinfig_width% + ]{#5}% + \captionof{figure}{#7}% + \label{fig:#6} \vfill% \\% \end{tblr}% diff --git a/packages/Header.sty b/packages/Header.sty index 516e9eb..d98359a 100644 --- a/packages/Header.sty +++ b/packages/Header.sty @@ -3,8 +3,8 @@ \RequirePackage{PrimeTeX/packages/Layout} -\providelength{\insideheaderoffset}[\bigfloatoverhang] -\providelength{\outsideheaderoffset}[ +\ProvideLength{\insideheaderoffset}[\bigfloatoverhang] +\ProvideLength{\outsideheaderoffset}[ \bigfloatoverhang * \real{\bigfloatoffsetratio} ] diff --git a/packages/Layout.sty b/packages/Layout.sty index c6374c8..1974489 100644 --- a/packages/Layout.sty +++ b/packages/Layout.sty @@ -4,9 +4,7 @@ % Suppress warning about \showhyphens being changed. \let\CheckCommand\providecommand -\RequirePackage{ifthen} - -\NewDocumentCommand{\providelength}{m O{0pt}}{% +\NewDocumentCommand{\ProvideLength}{m O{0pt}}{% \ifdeflength{#1}{% It is already defined! }{% Not defined, so define it! \newlength{#1}% @@ -60,8 +58,8 @@ \RequirePackage{calc} \RequirePackage[strict]{changepage} -\providelength{\marparwidth}[\marginparsep + \marginparwidth] -\providelength{\contentwidth}[\textwidth + \marparwidth] +\ProvideLength{\marparwidth}[\marginparsep + \marginparwidth] +\ProvideLength{\contentwidth}[\textwidth + \marparwidth] \RequirePackage[ debug, @@ -114,10 +112,11 @@ }% }{} -\newcommand{\bigfloatoffsetratio}{2} +\newcommand{\bigfloatoffsetratio}{2.0} % Maximum width adjustment to fit 2 16x9 screensots on one page. -\providelength{\bigfloatoverhang}[0.54in] +\ProvideLength{\bigfloatoverhang}[0.54in] +\newcommand{\bigfloatplacement}{htpb} \floatstyle{plain} \newfloat{generic}{htpb}{lgf} @@ -128,9 +127,9 @@ % #2: Overhang: the distance that the BigFloat extends into the margins. O{\bigfloatoverhang} % #3: Float position: where the float may appear on the page. - O{htpb} - % #4: Offset: the distance to offset the center of the BigFloat from the center - % of the text block. + O{\bigfloatplacement} + % #4: Offset: the ratio between the overhangs on the inside and outside of + % BigFloat. O{\bigfloatoffsetratio} % #5: Body: what appears in the BigFloat. +b @@ -148,4 +147,49 @@ \end{minipage}% \end{SmartAdjustWidth}% \end{#1}% -}{} \ No newline at end of file +}{} + +\AtBeginDocument{ + \ifthenelse{\boolean{isElectronic}}{ + \newgeometry{ + inner = 0.75in, + top = 66pt, % 11/12in + marginratio = 2:3, + } + \savegeometry{smallMargin} + \newgeometry{ + inner = 24pt, % 1/3in + top = 0.25in, + marginratio = 2:3, + } + \savegeometry{tinyMargin} + }{ + \newgeometry{ + twoside = true, + inner = 0.75in, + top = 66pt, % 11/12in + marginratio = 2:3, + } + \savegeometry{smallMargin} + \newgeometry{ + twoside = true, + inner = 24pt, % 1/3in + top = 0.25in, + marginratio = 2:3, + } + \savegeometry{tinyMargin} + } + \restoregeometry + + \NewDocumentEnvironment{SmallMargin}{O{0.0in} O{-0.25in}}{ + \clearpage + \loadgeometry{smallMargin} + \setlength{\insideheaderoffset}{#1} + \setlength{\outsideheaderoffset}{#2} + \pagestyle{fancy} + }{ + \clearpage + \pagestyle{fancy} + \restoregeometry + } +} \ No newline at end of file