- Improve wrap objects.

- Debug.
This commit is contained in:
2025-09-11 16:42:59 -05:00
parent d1fd2fef22
commit 0e68ac723d
6 changed files with 130 additions and 102 deletions

View File

@@ -44,17 +44,35 @@
\includegraphics[keepaspectratio,#1]{#2}%
}
\dim_const:Nn \c_WrapFig_hoffset_dim {0in}
\dim_const:Nn \c_WrapFig_im_hoffset_dim {1in}
\dim_const:Nn \c_WrapFig_om_hoffset_dim {\marparwidth}
\str_const:Nn \c_WrapFig_placement_str {o}
\dim_const:Nn \c_WrapFig_hoffset_dim {\marparwidth}
\dim_new:N \l_WrapFig_width_dim
\str_new:N \l_WrapFig_passed_keys_str
\tl_new:N \l_WrapFig_format_tl
\newsavebox{\__WrapFig_graphic:}
\keys_define:nn {WrapFig} {
placement .choices:nn = {l,r,c,i,o}{
hoffset.dim_set:N = \l_WrapFig_hoffset_dim,
hoffset.initial:e = {\c_WrapFig_hoffset_dim},
margin.choices:nn = {none,inside,outside,} {
\str_set:Ne \l_WrapFig_margin_str {\l_keys_choice_tl}
},
margin.initial:n = {none},
margin.default:n = {none},
placement.choices:nn= {c,i,l,o,r} {
\str_set:Ne \l_WrapFig_placement_str {\l_keys_choice_tl}
},
placement .initial:e = {\c_WrapFig_placement_str},
placement.initial:e = {\c_WrapFig_placement_str},
hoffset .dim_set:N = \l_WrapFig_hoffset_dim,
hoffset .initial:e = {\c_WrapFig_hoffset_dim},
unknown.code:n = {
\str_put_right:Ne \l_WrapFig_passed_keys_str {\l_keys_key_str=\l_keys_value_tl,}
}
}
\NewDocumentCommand{\WrapFig}{
@@ -68,17 +86,63 @@
>{\TrimSpaces}m
% #5: caption
m
% #6: Options passed to wrapstuff
O{}
}{ \group_begin:
\keys_set:nn {WrapFig} {#1}
\__WrapFig_process_options:
\message{
WrapFig:~#4,~
placement:~\l_WrapFig_placement_str,~
hoffset:~\dim_use:N \l_WrapFig_hoffset_dim,
passed_keys:~\l_WrapFig_passed_keys_str}
\expanded{\noexpand\begin{wrapstuff}[
\l_WrapFig_placement_str,
hoffset = \l_WrapFig_hoffset_dim,
hoffset = {\dim_use:N \l_WrapFig_hoffset_dim},
#6
]}
\begin{MyCaption}{fig:#4}{#5}
\includegraphics[%
keepaspectratio,%
#3%
]{#2}%
\end{MyCaption}
\sbox{\__WrapFig_graphic:}{
\includegraphics[
keepaspectratio,
#3
]{#2}
}
\settowidth{\l_WrapFig_width_dim}{\usebox{\__WrapFig_graphic:}}
\begin{minipage}{\l_WrapFig_width_dim}
\begin{MyCaption}[format=\l_WrapFig_format_tl]{fig:#4}{#5}
\usebox{\__WrapFig_graphic:}
\end{MyCaption}
\end{minipage}
\end{wrapstuff}
\group_end: }
\group_end: }
\cs_new:Nn \__WrapFig_process_options: {
\str_case:en \l_WrapFig_margin_str {
{inside} {
\dim_set:Nn \l_WrapFig_hoffset_dim {\c_WrapFig_im_hoffset_dim}
\str_set:Nn \l_WrapFig_placement_str {i}
}
{outside} {
\dim_set:Nn \l_WrapFig_hoffset_dim {\c_WrapFig_om_hoffset_dim}
\str_set:Nn \l_WrapFig_placement_str {o}
}
}
\ifthenelse{\boolean{isElectronic}}{
\str_replace_all:Nnn \l_WrapFig_placement_str {i} {l}
\str_replace_all:Nnn \l_WrapFig_placement_str {o} {r}
}{
\checkoddpage
\ifoddpage
\str_replace_all:Nnn \l_WrapFig_placement_str {i} {l}
\str_replace_all:Nnn \l_WrapFig_placement_str {o} {r}
\else
\str_replace_all:Nnn \l_WrapFig_placement_str {i} {r}
\str_replace_all:Nnn \l_WrapFig_placement_str {o} {l}
\fi
}
\str_case:en \l_WrapFig_placement_str {
{c} {\tl_set:Nn \l_WrapFig_format_tl {\Centering}}
{l} {\tl_set:Nn \l_WrapFig_format_tl {\RaggedLeft}}
{r} {\tl_set:Nn \l_WrapFig_format_tl {\RaggedRight}}
}
}