From d0e36875830d8cffe32ff13594733af94c19e1a2 Mon Sep 17 00:00:00 2001 From: Silcantar Date: Tue, 9 Sep 2025 23:48:36 -0500 Subject: [PATCH] Debugging. --- packages/Boxout.sty | 2 +- packages/Caption.sty | 53 ++++++- packages/Floats.sty | 333 ++++++++++++++++++++++------------------- packages/Layout.sty | 3 - packages/TitlePage.sty | 1 + 5 files changed, 234 insertions(+), 158 deletions(-) diff --git a/packages/Boxout.sty b/packages/Boxout.sty index 9a2fddc..98390a5 100644 --- a/packages/Boxout.sty +++ b/packages/Boxout.sty @@ -96,7 +96,7 @@ \begin{BigFloat}[ type = generic, overhang = \l_BigFloat_overhang_dim, - placement:e = \l_BigFloat_placement_clist, + placement:e = \l_Float_placement_clist, offset = \l_BigFloat_offset_fp, ]% \begin{Boxout}[% diff --git a/packages/Caption.sty b/packages/Caption.sty index a8812ac..6c6fccb 100644 --- a/packages/Caption.sty +++ b/packages/Caption.sty @@ -27,4 +27,55 @@ \RaggedLeft% \fi% }% -} \ No newline at end of file +} + +\ExplSyntaxOn + +\keys_define:nn {MyCaption} { + figure .code:n = {\str_set:Nn \l_MyCaption_type_str {figure}}, + + format .tl_set:N = \l_MyCaption_format_tl, + format .initial:n = {\Centering\small\color{caption}}, + + table .code:n = {\str_set:Nn \l_MyCaption_type_str {table}}, + + type .choices:nn = {figure,table}{ + \str_set:Ne \l_MyCaption_type_str {\l_keys_choice_tl} + }, + type .initial:n = {figure}, +} + +\tl_new:N \l_MyCaption_label_tl +\tl_new:N \l_MyCaption_number_tl + +\NewDocumentCommand{\MyCaption}{ + % #1: Key-value options. + O{} + % #2: Label + m + % #3: Caption + m +}{ \group_begin: + \keys_set:nn {MyCaption} {#1} + \str_case:en {\l_MyCaption_type_str} { + {figure} { + \addtocounter{figure}{1} + \tl_set:Nn \l_MyCaption_label_tl {Figure} + \tl_set:Nn \l_MyCaption_number_tl { + \arabic{chapter}.\arabic{figure} + } + \addcontentsline{lof}{figure}{\l_MyCaption_number_tl\numberline#3} + } + {table} { + \addtocounter{table}{1} + \tl_set:Nn \l_MyCaption_label_tl {Table} + \tl_set:Nn \l_MyCaption_number_tl { + \arabic{chapter}.\arabic{table} + } + \addcontentsline{lot}{table}{\l_MyCaption_number_tl\numberline#3} + } + } + \l_MyCaption_format_tl + \l_MyCaption_label_tl~\l_MyCaption_number_tl :~#3 + \label{#2} +\group_end: } \ No newline at end of file diff --git a/packages/Floats.sty b/packages/Floats.sty index 329eaec..a2e7171 100644 --- a/packages/Floats.sty +++ b/packages/Floats.sty @@ -9,7 +9,7 @@ % I think this redefines how float environments evaluate the placement argument, % allowing a command in the argument to be expanded before it is used. Otherwise % it thinks we are trying to use the literal command name as the placement. -\def\ExpEnvOption#1#2[#3]{% +\def\ExpEnvOption#1#2[#3]{ \expandafter\@expenvopt\expandafter{#3}{#1}{#2} } \def\@expenvopt#1#2#3{#2{#3}[#1]} @@ -38,39 +38,48 @@ } } +\clist_const:Nn \c_Float_placement_clist {h,t,p,b} + +\clist_new:N \l_Float_placement_clist + +% Create a set of keys that are common to all floating environments. +\keys_define:nn {Float} { + placement .multichoices:nn = {b,H,h,p,t}{ + \clist_put_right:Ne \l_Float_placement_clist {\l_keys_choice_tl} + }, +} + % Maximum width adjustment to fit 2 16x9 screensots on one page. \dim_const:Nn \c_BigFloat_overhang_dim {0.54in} \str_const:Nn \c_BigFloat_type_str {generic} -\clist_const:Nn \c_BigFloat_placement_clist {h,t,p,b} \fp_const:Nn \c_BigFloat_offset_fp {2.0} \ProvideLength{\BigFloatOverhang}[\dim_use:N \c_BigFloat_overhang_dim] \NewDocumentCommand{\BigFloatOffset}{}{\fp_use:N \c_BigFloat_offset_fp} -\clist_new:N \l_BigFloat_placement_clist \dim_new:N \l_BigFloat_workoverhang_dim +\keys_define:nn {} { + BigFloat .inherit:n = {Float}, +} + \keys_define:nn{BigFloat}{ - type .choices:nn = {figure,generic,table}{ - \str_set:Ne \l_BigFloat_type_str {\l_keys_choice_tl} - }, - type .default:e = {\c_BigFloat_type_str}, - type .initial:e = {\c_BigFloat_type_str}, - - overhang .dim_set:N = \l_BigFloat_overhang_dim, - overhang .default:e = {\c_BigFloat_overhang_dim}, - overhang .initial:e = {\c_BigFloat_overhang_dim}, - - placement .multichoices:nn = {b,H,h,p,t}{ - \clist_put_right:Ne \l_BigFloat_placement_clist {\l_keys_choice_tl} - }, + maxoverhang .dim_set:N = \l_BigFloat_maxoverhang_dim, + maxoverhang .initial:n = {1in}, offset .fp_set:N = \l_BigFloat_offset_fp, offset .default:e = {\c_BigFloat_offset_fp}, offset .initial:e = {\c_BigFloat_offset_fp}, - maxoverhang .dim_set:N = \l_BigFloat_maxoverhang_dim, - maxoverhang .initial:n = {1in}, + overhang .dim_set:N = \l_BigFloat_overhang_dim, + overhang .default:e = {\c_BigFloat_overhang_dim}, + overhang .initial:e = {\c_BigFloat_overhang_dim}, + + type .choices:nn = {figure,generic,table}{ + \str_set:Ne \l_BigFloat_type_str {\l_keys_choice_tl} + }, + type .default:e = {\c_BigFloat_type_str}, + type .initial:e = {\c_BigFloat_type_str}, } \NewDocumentEnvironment{BigFloat}{ @@ -78,47 +87,42 @@ O{} % #2: Body: what appears in the BigFloat. +b -}{% - \keys_set:nn{BigFloat}{#1}% +}{ \group_begin: + \keys_set:nn{BigFloat}{#1} \clist_use_default:Nnnn \l_BigFloat_placement_str - {\l_BigFloat_placement_clist} - {\c_BigFloat_placement_clist} + {\l_Float_placement_clist} + {\c_Float_placement_clist} \dim_set:Nn \l_BigFloat_workoverhang_dim { \dim_min:nn {\l_BigFloat_overhang_dim} {\l_BigFloat_maxoverhang_dim} } - \ExpEnvOption% + \ExpEnvOption \begin{\l_BigFloat_type_str}[\l_BigFloat_placement_str]% float environment - \begin{SmartAdjustWidth}{% + \begin{SmartAdjustWidth}{ \fp_to_dim:n { -\l_BigFloat_workoverhang_dim - }% - }{% - \fp_to_dim:n {% + } + }{ + \fp_to_dim:n { -\l_BigFloat_workoverhang_dim * \l_BigFloat_offset_fp - }% - }% - \begin{minipage}{\linewidth}% - \ifthenelse{\boolean{isDraft}}{% - {\color{layout}\rule{\textwidth}{1pt}\zws}% - #2% - }{% - #2% - }% - \end{minipage}% - \end{SmartAdjustWidth}% - \end{\l_BigFloat_type_str}% - \dim_set:Nn \l_BigFloat_overhang_dim {\c_BigFloat_overhang_dim} -}{} + } + } + \begin{minipage}{\linewidth} + \ifthenelse{\boolean{isDraft}}{ + {\color{layout}\rule{\textwidth}{1pt}\zws} + #2 + }{ + #2 + } + \end{minipage} + \end{SmartAdjustWidth} + \end{\l_BigFloat_type_str} +\group_end: }{} \clist_const:Nn \c_CenterFig_placement_clist {h, t, p, b} -\clist_new:N \l_CenterFig_placement_clist - -\keys_define:nn{CenterFig}{ - placement .multichoices:nn= {b,H,h,p,t}{ - \clist_put_right:Nn \l_CenterFig_placement_clist {\l_keys_choice_tl} - }, +\keys_define:nn {} { + CenterFig .inherit:n = {Float}, } \NewDocumentCommand{\CenterFig}{ @@ -132,21 +136,19 @@ >{\TrimSpaces}m % Caption. m -}{ - \keys_set:nn{CenterFig}{#2}% +}{ \group_begin: + \keys_set:nn{CenterFig}{#2} \clist_use_default:Nnnn \l_CenterFig_placement_str - {\l_CenterFig_placement_clist} - {\c_CenterFig_placement_clist} + {\l_Float_placement_clist} + {\c_Float_placement_clist} \ExpEnvOption - \begin{figure}[\l_CenterFig_placement_str]% - \Centering% - \includegraphics[keepaspectratio,#1]{#3}% - \caption{#5}% - \label{fig:#4}% - \end{figure}% -} - -%\fp_const:Nn \c_BigFig_graphicdpi_fp {72.0} + \begin{figure}[\l_CenterFig_placement_str] + \Centering + \includegraphics[keepaspectratio,#1]{#3} + \caption{#5} + \label{fig:#4} + \end{figure} +\group_end: } \keys_define:nn{}{ BigFig .inherit:n = BigFloat, @@ -155,14 +157,19 @@ \keys_define:nn{BigFig}{ hres .fp_set:N = \l_BigFig_hres_fp, hres .initial:n = {0}, + hres .default:n = {0}, dpi .fp_set:N = \l_BigFig_dpi_fp, - dpi .initial:n = {96},%{\c_BigFig_dpi_fp}, + dpi .initial:n = {96}, + dpi .default:n = {96}, scale .fp_set:N = \l_BigFig_scale_fp, scale .initial:n = {1}, + scale .default:n = {1}, } +\dim_new:N \l_BigFig_overhang_dim + \NewDocumentCommand{\BigFig}{ % Key=value options. O{} @@ -172,10 +179,12 @@ >{\TrimSpaces}m % Caption. m -}{% +}{ \group_begin: \keys_set:nn{BigFig}{#1} - \fp_compare:nNnF {\l_BigFig_hres_fp} = {0} { - \dim_set:Nn \l_BigFloat_overhang_dim { + \fp_compare:nNnTF {\l_BigFig_hres_fp} = {0} { + \dim_set:Nn \l_BigFig_overhang_dim {\l_BigFloat_overhang_dim} + }{ + \dim_set:Nn \l_BigFig_overhang_dim { \dim_eval:n{ (\fp_to_dim:n{ \l_BigFig_scale_fp @@ -186,30 +195,32 @@ - \linewidth) / 3} } - %\dim_show:N \l_BigFloat_overhang_dim }{} \begin{BigFloat}[ type = figure, - overhang = \l_BigFloat_overhang_dim, - placement:e = {\clist_use:Nn \l_BigFloat_placement_clist {}}, + overhang = \l_BigFig_overhang_dim, + placement:e = \l_Float_placement_clist, offset = \l_BigFloat_offset_fp, - ]% - \captionsetup{type=figure}% - \includegraphics[keepaspectratio,width=\linewidth]{#2}% - \Centering\captionof{figure}{#4}%\par - \label{fig:#3}% - \end{BigFloat}% + ] + \captionsetup{type=figure} + \includegraphics[keepaspectratio,width=\linewidth]{#2} + \Centering\captionof{figure}{#4} + \label{fig:#3} + \end{BigFloat} +\group_end: } + +\keys_define:nn{}{ + DoubleBigFig .inherit:n = {BigFloat}, } -\keys_define:nn{DoubleBigFig}{ - overhang .dim_set:N = \l_DoubleBigFig_overhang_dim, - overhang .initial:e = {\c_BigFloat_overhang_dim}, +\dim_const:Nn \c_DoubleBigFig_space_dim {6pt} - offset .fp_set:N = \l_DoubleBigFig_offset_fp, - offset .initial:e = {\c_BigFloat_offset_fp}, +\keys_define:nn {DoubleBigFig} { + space .dim_set:N = \l_DoubleBigFig_space_dim, + space .initial:e = {\c_DoubleBigFig_space_dim}, } -\NewDocumentCommand{\DoubleBigFig}{% +\NewDocumentCommand{\DoubleBigFig}{ % Key=value options. O{} % First graphic filename. @@ -224,25 +235,50 @@ >{\TrimSpaces}m % Second Graphic caption. m -}{% +}{ \group_begin: + % The following is a hack to keep the figure counter from incrementing by 4 + % instead of 2. Replace it with a proper solution if you find one. + \addtocounter{figure}{-2} + \keys_set:nn{DoubleBigFig}{#1} \begin{BigFloat}[ - type = figure, - overhang = \l_DoubleBigFig_overhang_dim, - placement = {p}, - offset = \l_DoubleBigFig_offset_fp, - ]% - \captionsetup{type=figure}% - \includegraphics[keepaspectratio,width=\textwidth]{#2}% - \Centering\captionof{figure}{#4}% - \label{fig:#3} - \bigskip - \captionsetup{type=figure}% - \includegraphics[keepaspectratio,width=\textwidth]{#5}% - \Centering\captionof{figure}{#7}% - \label{fig:#6}% - \end{BigFloat}% -} + type = generic, + overhang = \l_BigFloat_overhang_dim, + placement:e = \l_Float_placement_clist, + offset = \l_BigFloat_offset_fp, + ] + \begin{tblr}{ + colspec = {Q[c,wd=\linewidth]}, + cells = {font=\mdseries}, + hlines = {0pt}, + hborder{1,Z} = { + abovespace = 0pt, + belowspace = 0pt, + }, + hborder{2} = { + abovespace = \l_DoubleBigFig_space_dim, + belowspace = \l_DoubleBigFig_space_dim, + }, + vborder{1-Z} = { + leftspace = 0pt, + rightspace = 0pt, + }, + } + %\captionsetup{type=figure} + \includegraphics[keepaspectratio,width=\textwidth]{#2} + \par + \MyCaption{fig:#3}{#4}\\ + % \Centering\captionof{figure}{#4} + % \label{fig:#3}\\ + %\captionsetup{type=figure} + \includegraphics[keepaspectratio,width=\textwidth]{#5} + \par + \MyCaption{fig:#6}{#7} + % \Centering\captionof{figure}{#7} + % \label{fig:#6} + \end{tblr} + \end{BigFloat} +\group_end: } \dim_const:Nn \c_TwinFig_space_dim {3pt} \dim_const:Nn \c_TwinFig_width_dim { @@ -251,35 +287,24 @@ \ProvideLength{\TwinFigWidth}[\dim_use:N \c_TwinFig_width_dim] +\keys_define:nn {} { + TwinFig .inherit:n = {BigFloat}, +} + \keys_define:nn{TwinFig}{ - overhang .dim_set:N = \l_TwinFig_overhang_dim, - overhang .initial:e = {\c_BigFloat_overhang_dim}, -% overhang .default:e = {\c_BigFloat_overhang_dim}, - - placement .clist_set:N= \l_TwinFig_placement_clist, - placement .initial:e = {\c_BigFloat_placement_clist}, -% placement .default:e = {\c_BigFloat_placement_clist}, - - offset .fp_set:N = \l_TwinFig_offset_fp, - offset .initial:e = {\c_BigFloat_offset_fp}, -% offset .default:e = {\c_BigFloat_offset_fp}, - valign .choices:nn = {b,f,h,m,t}{ \str_set:Ne \l_TwinFig_valign_str {\l_keys_choice_tl} }, valign .initial:n = {m}, -% valign .default:n = {m}, width .dim_set:N = \l_TwinFig_width_dim, width .initial:e = {\c_TwinFig_width_dim}, -% width .default:e = {\c_TwinFig_width_dim}, space .dim_set:N = \l_TwinFig_space_dim, space .initial:e = {\c_TwinFig_space_dim}, -% space .default:e = {\c_TwinFig_space_dim}, } -\NewDocumentCommand{\TwinFig}{% +\NewDocumentCommand{\TwinFig}{ % #1: Key=value options. O{} % #2: First graphic file. @@ -294,51 +319,53 @@ >{\TrimSpaces}m % #7: Second caption. >{\TrimSpaces}m -}{% - \keys_set:nn{TwinFig}{#1}% +}{ \group_begin: + % The following is a hack to keep the figure counter from incrementing by 4 + % instead of 2. Replace it with a proper solution if you find one. + \addtocounter{figure}{-2} + + \keys_set:nn{TwinFig}{#1} \begin{BigFloat}[ - type = {figure}, - overhang = \l_TwinFig_overhang_dim, - placement:e = \l_TwinFig_placement_clist, - offset = \l_TwinFig_offset_fp, - ]% - %\typeout{TwinFig~valign:~"\l_TwinFig_valign_str"} - \begin{tblr}{% - colspec = {*{2}{Q[c,wd=\l_TwinFig_width_dim]}},% + type = {generic}, + overhang = \l_BigFloat_overhang_dim, + placement:e = \l_Float_placement_clist, + offset = \l_BigFloat_offset_fp, + ] + \begin{tblr}{ + colspec = {*{2}{Q[c,wd=\l_TwinFig_width_dim]}}, rows:e = {\l_TwinFig_valign_str}, hlines = {0pt}, - %vlines,% For debugging. Comment out when done. - hborder{1,Z} = {% - abovespace = 0pt,% - belowspace = 0pt,% - },% - vborder{1,Z} = {% - leftspace = 0pt,% - rightspace = 0pt,% - },% - vborder{2} = {% - leftspace = \l_TwinFig_space_dim,% - rightspace = \l_TwinFig_space_dim,% - },% - }% + hborder{1-Z} = { + abovespace = 0pt, + belowspace = 0pt, + }, + vborder{1,Z} = { + leftspace = 0pt, + rightspace = 0pt, + }, + vborder{2} = { + leftspace = \l_TwinFig_space_dim, + rightspace = \l_TwinFig_space_dim, + }, + } \vfill - \captionsetup{type=figure}% - \includegraphics[% - keepaspectratio,width=\l_TwinFig_width_dim% - ]{#2}% - \captionof{figure}{#4}% + \captionsetup{type=figure} + \includegraphics[ + keepaspectratio,width=\l_TwinFig_width_dim + ]{#2} + \captionof{figure}{#4} \label{fig:#3} - \vfill% - &% + \vfill + & \vfill - \captionsetup{type=figure}% - \includegraphics[% - keepaspectratio,width=\l_TwinFig_width_dim% - ]{#5}% - \captionof{figure}{#7}% + \captionsetup{type=figure} + \includegraphics[ + keepaspectratio,width=\l_TwinFig_width_dim + ]{#5} + \captionof{figure}{#7} \label{fig:#6} - \vfill% - \\% - \end{tblr}% - \end{BigFloat}% -} \ No newline at end of file + \vfill + \\ + \end{tblr} + \end{BigFloat} +\group_end: } \ No newline at end of file diff --git a/packages/Layout.sty b/packages/Layout.sty index 88d6b6a..26fe73d 100644 --- a/packages/Layout.sty +++ b/packages/Layout.sty @@ -139,14 +139,11 @@ } \restoregeometry - %\ExplSyntaxOn \NewDocumentEnvironment{SmallMargin}{O{0.0in} O{-0.25in}}{ \clearpage \loadgeometry{smallMargin} \setlength{\HeaderInsideOffset}{#1} - %\dim_set:Nn \g_header_insideoffset_dim {#1} \setlength{\HeaderOutsideOffset}{#2} - %\dim_set:Nn \g_header_outsideoffset_dim {#2} \pagestyle{fancy} }{ \clearpage diff --git a/packages/TitlePage.sty b/packages/TitlePage.sty index 9dd872e..fb6c85a 100644 --- a/packages/TitlePage.sty +++ b/packages/TitlePage.sty @@ -6,6 +6,7 @@ % Define custom title page. \NewDocumentCommand{\PrimeTitlePage}{O{}}{ \thispagestyle{empty} + \pdfbookmark{Title Page}{title-page} \begin{sbfamily} {\noindent\large\raggedright \vspace*{\stretch{1}}