%%
%% 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 <martin@scharrer-online.de>
%% 
%% 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'.
