Files
PrimeTeX/packages/Boxout.sty

116 lines
2.5 KiB
TeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{PrimeTeX/packages/Boxout}[2025-08-20]
\RequirePackage{PrimeTeX/packages/Layout}
\RequirePackage{PrimeTeX/packages/Color}
\RequirePackage{PrimeTeX/packages/Tables}
\RequirePackage{calc}
\providelength{\boxoutpadding}[1em]
\providelength{\boxoutrule}[1pt]
\NewTblrEnviron{tblrBoxout}
\SetTblrInner[tblrBoxout]{
cells = {boxoutBG},
hborder{1} = {belowspace=\boxoutpadding},
hborder{Z} = {abovespace=\boxoutpadding},
hlines = {0pt,boxoutBG},
hline{1,Z} = {\boxoutrule,boxoutFG},
%row{1} = {font={\bfseries\sbfamily}},
vborder{1} = {rightspace=\boxoutpadding},
vborder{Z} = {leftspace=\boxoutpadding},
vlines = {0pt,boxoutBG},
vline{1,Z} = {\boxoutrule,boxoutFG},
}
\NewDocumentEnvironment{@boxout}{
m m +b
}{
\label{box:#1}%
\begin{tblrBoxout}{#2}%
#3%
\end{tblrBoxout}%
}{}
\NewDocumentEnvironment{Boxout}{
% #1: Label, passed to @boxout argument #1.
>{\TrimSpaces}m
% #2: Tabularray colspec, passed to @boxout argument #2.
O{colspec={X[l,h]}}
% #3: Caption.
m
% #4: [Ww] for warning box.
o
% #5: Body, passed to @boxout.
+b
}{%
\ifthenelse{\equal{#4}{w}\OR\equal{#4}{W}}{%
\colorlet{boxoutBG}{warningBG}%
\colorlet{boxoutFG}{warningFG}%
}{}%
\IfBlankTF{#3}{%
\begin{@boxout}{#1}{#2}{}%
\setlength{\parskip}{\medskipamount}%
#5\\%
\end{@boxout}%
}{%
\begin{@boxout}{#1}{#2}%
{\Centering\sbfamily\bfseries #3}\\%
\setlength{\parskip}{\medskipamount}%
#5\\%
\end{@boxout}%
}%
}{}
\NewDocumentEnvironment{BigBoxout}{
% #1: Overhang, passed to BigFloat argument #1.
O{\bigfloatoverhang}
% #2: Float placement, passed to BigFloat argument #2.
O{htpb}
% #3: Offset ratio, passed to BigFloat argument #3.
O{\bigfloatoffsetratio}
% #4: Label, passed to Boxout argument #1.
>{\TrimSpaces}m
% #5: Tabularray colpec, passed to Boxout argument #2.
O{X[l,h]}
% #6: Caption, passed to Boxout argument #3.
m
% #7: [Ww] for warning box, if present passed to Boxout argument #4.
o
% #5: Body, passed to Boxout.
+b
}{
\begin{BigFloat}[generic][#1][#2][#3]%
\IfNoValueTF{#7}{%
\begin{Boxout}{#4}[#5]{#6}%
#8%
\end{Boxout}%
}{%
\begin{Boxout}{#4}[#5]{#6}[#7]%
#8%
\end{Boxout}%
}%
\end{BigFloat}%
}{}
\NewDocumentEnvironment{WrapBoxout}{
% position [l,r,i,o]
O{o}
% offset
O{\marparwidth}
% width
O{3in}
O{X[l,h]}
>{\TrimSpaces}m
m
o
+b
}{%
\begin{wrapfigure}{#1}[#2]%
\begin{minipage}{#3}%
\begin{Boxout}[#4]{#5}{#6}[#7]%
#8%
\end{Boxout}%
\end{minipage}%
\end{wrapfigure}%
}{}