mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
8.9 KiB
328 lines
8.9 KiB
%% |
|
%% 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 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.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}[% |
|
2012/05/17 |
|
v0.4b |
|
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 |
|
\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'.
|
|
|