Debugging.

This commit is contained in:
Silcantar
2025-09-09 23:48:36 -05:00
parent 1f79529bba
commit d0e3687583
5 changed files with 234 additions and 158 deletions

View File

@@ -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}[%

View File

@@ -28,3 +28,54 @@
\fi%
}%
}
\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: }

View File

@@ -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
\captionsetup{type=figure}%
\includegraphics[%
keepaspectratio,width=\l_TwinFig_width_dim%
]{#5}%
\captionof{figure}{#7}%
&
\vfill
\captionsetup{type=figure}
\includegraphics[
keepaspectratio,width=\l_TwinFig_width_dim
]{#5}
\captionof{figure}{#7}
\label{fig:#6}
\vfill%
\\%
\end{tblr}%
\end{BigFloat}%
}
\vfill
\\
\end{tblr}
\end{BigFloat}
\group_end: }

View File

@@ -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

View File

@@ -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}}