%% %% This is file `collectbox.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% collectbox.dtx (with options: `collectbox') %% %% Copyright (C) 2011 by Martin Scharrer %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c %% 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.3c or later is part of all distributions of LaTeX %% version 2008/05/04 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, collectbox.ins %% and the derived file collectbox.sty. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{collectbox}[2011/08/11 v0.3a 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 } \def\collectbox@macro@bgroup{% \@ifnextchar\bgroup {\let\@let@token=}% {\collectbox@arg}% } \def\collectbox@env@bgroup{% \let\collectbox@endcode\relax \let\collectbox@bgroup\collectbox@macro@bgroup \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 } \def\collectbox@arg#1{% #1\egroup } \def\collectbox@end{% \collectbox@endgroup \egroup \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 \let\collectbox@endcode\relax \let\collectbox@bgroup\collectbox@macro@bgroup } \begingroup \expandafter\ifx\csname protected\endcsname\relax \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{% \noindent \begingroup \collectboxenvtrue \edef\@currenvir{\@currenvir\noexpand\empty}% \let\collectbox@bgroup\collectbox@env@bgroup \let\collectbox@endcode\collectbox@env@endcode \expandafter\ifx\csname end#1\endcsname\relax \expandafter\let\csname end#1\endcsname\collectbox@envend \fi } \newif\ifcollectboxenv \def\collectbox@env@endcode{\ifhmode\unskip\fi}% \def\collectbox@envend{\egroup\endgroup}% \endinput %% %% End of file `collectbox.sty'.