mirror of
https://github.com/moparisthebest/xeps
synced 2024-10-31 15:35:07 -04:00
329 lines
8.9 KiB
TeX
329 lines
8.9 KiB
TeX
%%
|
|
%% 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'.
|