%% %% This is file `collectbox.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% collectbox.dtx (with options: `collectbox.sty') %% %% IMPORTANT NOTICE: %% %% For the copyright see the source file. %% %% Any modified versions of this file must be renamed %% with new filenames distinct from collectbox.sty. %% %% For distribution of the original source see the terms %% for copying and modification in the file collectbox.dtx. %% %% This generated file may be distributed as long as the %% original source files, as listed above, are part of the %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) %% Copyright (C) 2012-2022 by Martin Scharrer %% ------------------------------------------------------------------- %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX %% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Martin Scharrer. %% %% This work consists of the files collectbox.dtx and collectbox.ins %% and the derived filebase collectbox.sty. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{collectbox}[% 2022/10/17 v0.4c Collect macro arguments as boxes] \newsavebox\collectedbox \newcommand*\collectbox{% \@ifstar {\collectbox@a{{\BOXCONTENT}}}% {\collectbox@a{}}% } \long\def\collectbox@a#1{% \@ifnextchar[% {\collectbox@b{#1}}% {\collectbox@b{#1}[]}% } \long\def\collectbox@b#1[#2]#3{% \@ifnextchar[% {\collectbox@c{#2}{#3#1}}% {\collectbox@c{#2}{#3#1}[]}% } \long\def\collectbox@c#1#2[#3]{% \collectbox@{#1}{#2}{#3}% } \let\collect@box\hbox \let\collectbox@mode\leavevmode \newcommand\collectbox@[3]{% \begingroup \collectbox@mode \@temptokena{#3\collectbox@end#2\endgroup}% \setbox\collectedbox\collect@box\bgroup \collectbox@setgroup #1\bgroup \aftergroup\the \aftergroup\@temptokena \collectbox@bgroup } \let\collectbox@macro\collectbox@ \newcommand\collectbox@env[3]{% \collectbox@mode \def\collectboxenvend{#3\collectbox@end#2\collectbox@currenvir}% \setbox\collectedbox\collect@box\bgroup \collectbox@setgroup \collectbox@reset \ignorespaces #1% } \def\collectbox@currenvir{% \edef\@currenvir{\@currenvir}% } \def\collectbox@macro@bgroup{% \@ifnextchar\bgroup {\let\@let@token=}% {\collectbox@arg}% } \def\collectbox@env@bgroup{% \collectbox@reset \ignorespaces } \let\collectbox@bgroup\collectbox@macro@bgroup \def\collectbox@setgroup{% \color@setgroup } \def\collectbox@endgroup{% \collectbox@endcode \color@endgroup } \let\collectbox@endcode\relax \newcommand\@collectbox[1]{% \begingroup \collectbox@mode \@temptokena{\collectbox@end#1\endgroup}% \setbox\collectedbox\collect@box\bgroup \collectbox@setgroup\bgroup \aftergroup\the \aftergroup\@temptokena \collectbox@bgroup } \newcommand\@Collectbox[2]{% \begingroup \collectbox@mode \sbox\collectedbox{#2}% \collectbox@setdims #1% \endgroup } \def\collectbox@arg#1{% #1\egroup } \def\collectbox@end{% \collectbox@endgroup \egroup \collectbox@setdims \ifcollectboxenv \collectbox@reset \collectbox@currenvir \fi } \def\collectbox@setdims{% \collectbox@protecteddef\BOXCONTENT{\usebox\collectedbox}% \collectbox@protecteddef\width{\wd\collectedbox}% \collectbox@protecteddef\height{\ht\collectedbox}% \collectbox@protecteddef\depth{\dp\collectedbox}% \collectbox@protecteddef\totalheight{\@ovri}% \totalheight\height \advance\totalheight\depth }% \def\collectbox@reset{% \let\collectbox@endcode\relax \let\collectbox@bgroup\collectbox@macro@bgroup \let\collectbox@\collectbox@macro \collectboxenvfalse } \begingroup \expandafter\ifx\csname protected\endcsname\relax \global\let\collectbox@protecteddef\def% \else \gdef\collectbox@protecteddef{\protected\def}% \fi \endgroup \let\collectbox@code\empty \newcommand\collectboxto[1]{% \@ifnextchar[% {\collectboxto@a{#1}}% {\collectboxto@a{#1}[]}% } \long\def\collectboxto@a#1[#2]#3{% \@ifnextchar[% {\collectboxto@b{#1}{#2}{#3}}% {\collectboxto@b{#1}{#2}{#3}[]}% } \long\def\collectboxto@b#1#2#3[#4]{% \collectboxto@{#1}{#2}{#3}{#4}% } \newcommand\collectboxto@[4]{% \collectbox@mode \setbox#1\collect@box\bgroup \def\collectbox@code{#4\collectbox@endgroup\egroup#3}% \collectbox@setgroup#2\bgroup \aftergroup\collectbox@code \collectbox@bgroup } \newcommand\@collectboxto[2]{% \collectbox@mode \setbox#1\collect@box\bgroup \def\collectbox@code{\collectbox@endgroup\egroup#2}% \collectbox@setgroup\bgroup \aftergroup\collectbox@code \collectbox@bgroup } \newcommand\nocollectbox@[3]{% \collectbox@mode \collect@box\bgroup \def\collectbox@code{#3\egroup#2}% #1\bgroup \aftergroup\collectbox@code \collectbox@bgroup } \newcommand\nocollectbox@to[4]{% \collectbox@mode \collect@box to #1\bgroup \def\collectbox@code{#4\egroup#3}% #2\bgroup \aftergroup\collectbox@code \collectbox@bgroup } \newcommand*\collectboxcheckenv[1]{% \begingroup \def\@tempa{#1}% \expandafter\endgroup \ifx\@currenvir\@tempa \@collectboxisenv{#1}% \fi } \def\@collectboxisenv#1{% \collectbox@noindent \collectboxenvtrue \edef\@currenvir{\@currenvir\noexpand\empty}% \let\collectbox@bgroup\collectbox@env@bgroup \let\collectbox@endcode\collectbox@env@endcode \let\collectbox@\collectbox@env \expandafter\ifx\csname end#1\endcsname\relax \expandafter\let\csname end#1\endcsname\collectbox@envend \fi } \newif\ifcollectboxenv \let\collectbox@noindent\noindent \def\collectbox@env@endcode{\ifhmode\unskip\fi}% \def\collectbox@envend{\collectboxenvend}% \def\collectboxenvend{% \egroup \collectbox@currenvir }% \newcommand\collectboxtabular[3][c]{% \collectbox@tab{tabular}{[#1]{#2}}{}{#3}{}% } \newcommand\collectboxtabularstar[4][c]{% \collectbox@tab{tabular*}{[#1]{#2}{#3}}{}{#4}{}% } \newcommand\collectboxarray[2]{% \collectbox@tab{array}{{#1}}{\(}{#2}{\)}% } \def\collectbox@checkarray{% \@ifpackageloaded{array}{% \let\collectbox@realarraycr\@arraycr \def\collectbox@setarraycr{% \let\@arraycr\collebox@cr \def\ialign{\let\@arraycr\collectbox@realarraycr \everycr {}\tabskip \z@skip \halign}% }% }{% \let\collectbox@realarraycr\@tabularcr \def\collectbox@setarraycr{% \let\@tabularcr\collebox@cr \def\ialign{\let\noexpand\@tabularcr\noexpand\collectbox@realarraycr \everycr {}\tabskip \z@skip \halign}% }% }% } \collectbox@checkarray \AtBeginDocument{\collectbox@checkarray}% \def\collectbox@dorealarraycr{% \expandafter\collectbox@realarraycr\collectbox@aftercrstuff } \let\collectbox@aftercrstuff\empty \def\collectbox@tab#1#2#3#4#5{% \begingroup \collectbox@mode \def\collectbox@codeafter{#4\endgroup}% \def\collectbox@endtabenv{\end{#1}#5\collectbox@end}% \def\collectbox@dotab{#3\begin{#1}#2}% \setbox\collectedbox\collect@box\bgroup \collectbox@setgroup \collectbox@setarraycr \afterassignment\collectbox@dotab \let\@let@token=% } \def\collebox@cr{% \@ifstar\collebox@@cr\collebox@@cr% } \def\collebox@@cr{% \@ifnextchar[% \collebox@@cr@opt {\collebox@@@cr{}}% } \def\collebox@@cr@opt[#1]{% \collebox@@@cr{[#1]}% } \def\collebox@@@cr#1{% \def\collectbox@aftercrstuff{#1}% \expandafter\collebox@@@@cr \romannumeral-`0% } \def\collebox@@@@cr{% \@ifnextchar\egroup{\collectbox@dorealarraycr\collectbox@aftertab}{% \ifx\@let@token\noalign \expandafter\collectbox@handlenoalign \else \expandafter\collectbox@dorealarraycr \fi }% } \def\collectbox@handlenoalign#1#2{% \collectbox@dorealarraycr \noalign{\bgroup\aftergroup\collectbox@afternoalign#2}% } \def\collectbox@handlenextnoalign#1#2{% \egroup \noalign{\bgroup\aftergroup\collectbox@afternoalign#2}% } \def\collectbox@afternoalign{% \expandafter\collectbox@@afternoalign \romannumeral-`0% } \def\collectbox@@afternoalign{% \@ifnextchar\egroup{\egroup\collectbox@aftertab}{% \ifx\@let@token\noalign \expandafter\collectbox@handlenextnoalign \else \expandafter\egroup \fi }% } \def\collectbox@aftertab{% \collectbox@endtabenv \afterassignment\collectbox@codeafter \let\@let@token=% } \endinput %% %% End of file `collectbox.sty'.