summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/adjustbox
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-09-05 23:28:46 +0000
committerKarl Berry <karl@freefriends.org>2011-09-05 23:28:46 +0000
commitb75ddb92b4bc5135cdf583ff71bd1dc29ba48ba6 (patch)
tree949199f8550a7d762b667964b02b608d83b4fa8d /Master/texmf-dist/tex/latex/adjustbox
parentbe746844a55d323ecd877e3d621544c8ad8b32e4 (diff)
adjustbox (5sep11)
git-svn-id: svn://tug.org/texlive/trunk@23831 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/adjustbox')
-rw-r--r--Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty41
-rw-r--r--Master/texmf-dist/tex/latex/adjustbox/collectbox.sty591
2 files changed, 627 insertions, 5 deletions
diff --git a/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty b/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
index 97e2d82fca6..c3b14b2fc59 100644
--- a/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
+++ b/Master/texmf-dist/tex/latex/adjustbox/adjustbox.sty
@@ -27,7 +27,7 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{adjustbox}[2011/08/21 v0.5a Adjusting TeX boxes (trim, clip, ...)]
+\ProvidesPackage{adjustbox}[2011/09/04 v0.6 Adjusting TeX boxes (trim, clip, ...)]
\RequirePackage{xkeyval}
\def\adjbox@defaultunit{bp}
@@ -55,7 +55,7 @@
\input{adjcalc.sty}
\disable@keys{adjbox}{patch,export,PGF,minimal}
\RequirePackage{graphicx}[1999/02/16]
-\RequirePackage{collectbox}[2011/08/11]
+\RequirePackage{collectbox}[2011/08/22]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\define@key{adjbox}{viewport}{%
@@ -741,6 +741,39 @@
\remove@to@nnil
}#1\@nnil
}
+\define@key{adjbox}{tabular}{%
+ \@ifnextchar[{%
+ \adjbox@tabular{tabular}%
+ }{%
+ \adjbox@tabular{tabular}{{#1}}\@nnil%
+ \remove@to@nnil
+ }#1\@nnil
+}
+\def\adjbox@tabular#1#2\@nnil{%
+ \ifcollectboxenv
+ \adjbox@innerenv{#1}{#2}\@nnil
+ \else
+ \def\adjbox@collectbox##1{\collectbox@tab{#1}{#2}{}{##1}{}}%
+ \fi
+}
+\define@key{adjbox}{tabular*}{%
+ \adjbox@tabular{tabular*}#1\@nnil
+}
+\define@key{adjbox}{array}{%
+ \@ifnextchar[{%
+ \adjbox@array%
+ }{%
+ \adjbox@array{{#1}}\@nnil%
+ \remove@to@nnil
+ }#1\@nnil
+}
+\def\adjbox@array#1\@nnil{%
+ \ifcollectboxenv
+ \adjbox@innercode{\(\begin{array}#1}{\end{array}\)}%
+ \else
+ \def\adjbox@collectbox##1{\collectbox@tab{array}{#1}{\(}{##1}{\)}}%
+ \fi
+}
\define@key{adjbox}{innerenv}{%
\@ifnextchar\bgroup{%
\adjbox@innerenv
@@ -755,9 +788,6 @@
\define@key{adjbox}{innercode}{%
\adjbox@innercode#1{}{}%
}
-\def\adjbox@innerenv#1#2\@nnil{%
- \def\adjbox@collectbox##1{\collectbox@{\begin{#1}#2}{##1}{\end{#1}}}%
-}%
\def\adjbox@innercode#1#2{%
\def\adjbox@collectbox##1{\collectbox@{#1}{##1}{#2}}%
}%
@@ -831,6 +861,7 @@
\def\adjbox@bgimage#1#2#3\@nnil{%
\adjbox@Gin@add{\@collectbox{\@bgimagebox{#1}{#2}}}%
}
+
\endinput
%%
%% End of file `adjustbox.sty'.
diff --git a/Master/texmf-dist/tex/latex/adjustbox/collectbox.sty b/Master/texmf-dist/tex/latex/adjustbox/collectbox.sty
new file mode 100644
index 00000000000..ba407935275
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/adjustbox/collectbox.sty
@@ -0,0 +1,591 @@
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{collectbox}[2011/08/23 v0.4 Collect macro arguments as boxes]
+% \end{macrocode}
+%
+% \begin{macro}{\collectedbox}
+% Box register used to store collected box.
+% \begin{macrocode}
+\newsavebox\collectedbox
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collectbox}
+% User level interface. Scans for potential star and optional arguments.
+% \begin{macrocode}
+\newcommand*\collectbox{%
+ \@ifstar
+ {\collectbox@a{{\BOXCONTENT}}}%
+ {\collectbox@a{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@a}
+% \begin{macrocode}
+\long\def\collectbox@a#1{%
+ \@ifnextchar[%
+ {\collectbox@b{#1}}%
+ {\collectbox@b{#1}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@b}
+% \begin{macrocode}
+\long\def\collectbox@b#1[#2]#3{%
+ \@ifnextchar[%
+ {\collectbox@c{#2}{#3#1}}%
+ {\collectbox@c{#2}{#3#1}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@c}
+% \begin{macrocode}
+\long\def\collectbox@c#1#2[#3]{%
+ \collectbox@{#1}{#2}{#3}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collect@box}
+% The box primitive used. Might be locally redefined to \Macro\vbox if required.
+% \begin{macrocode}
+\let\collect@box\hbox
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collectbox@mode}
+%
+% \begin{macrocode}
+\let\collectbox@mode\leavevmode
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collectbox@}
+% The box is saved using |\setbox|. Color is supported by using |\collectbox@setgroup|.
+% A brace group is then opened using |\bgroup| which will replace the opening brace of the
+% ``argument''. The end code is installed in this group using |\aftergroup|.
+% The opening brace written by the user is then removed by assigning it as token to a dummy variable.
+% If no |{| or |\bgroup| follows the next token is taken as sole content.
+% \begin{macrocode}
+\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@
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collectbox@env}
+% \begin{macrocode}
+\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%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@currenenvir}
+% \begin{macrocode}
+\def\collectbox@currenvir{%
+ \edef\@currenvir{\@currenvir}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@bgroup}
+% \begin{macrocode}
+\def\collectbox@macro@bgroup{%
+ \@ifnextchar\bgroup
+ {\let\@let@token=}%
+ {\collectbox@arg}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\collectbox@env@bgroup}
+% \begin{macrocode}
+\def\collectbox@env@bgroup{%
+ \collectbox@reset
+ \ignorespaces
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\let\collectbox@bgroup\collectbox@macro@bgroup
+% \end{macrocode}
+%
+%
+% \begin{macro}{\collectbox@setgroup}
+% Used at the very begin of the stored box.
+% \begin{macrocode}
+\def\collectbox@setgroup{%
+ \color@setgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@endgroup}
+% Used at the very end of the stored box.
+% \begin{macrocode}
+\def\collectbox@endgroup{%
+ \collectbox@endcode
+ \color@endgroup
+}
+\let\collectbox@endcode\relax
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@collectbox}
+% Simpler and quicker version of \Macro\collectbox.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@arg}
+% Supports |\collectbox{<code>}\somemacro| in addition to
+% |\collectbox{<code>}{\somemacro}|. The first following token is read and the inner brace group is closed
+% to trigger the |\aftergroup| code.
+% \begin{macrocode}
+\def\collectbox@arg#1{%
+ #1\egroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@end}
+% The color group is first closed, followed by the closing brace of the |\setbox| command.
+% The user dimension macros are then defined.
+% Direct after this code the users code is processed and concluded with a |\endgroup|.
+% \begin{macrocode}
+\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
+ \ifcollectboxenv
+ \collectbox@reset
+ \collectbox@currenvir
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@reset}
+% \begin{macrocode}
+\def\collectbox@reset{%
+ \let\collectbox@endcode\relax
+ \let\collectbox@bgroup\collectbox@macro@bgroup
+ \let\collectbox@\collectbox@macro
+ \collectboxenvfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@protecteddef}
+% \begin{macrocode}
+\begingroup
+\expandafter\ifx\csname protected\endcsname\relax
+ \let\collectbox@protecteddef\def%
+\else
+ \gdef\collectbox@protecteddef{\protected\def}%
+\fi
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@code}
+% Global storage macro for user code.
+% \begin{macrocode}
+\let\collectbox@code\empty
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxto}
+% User level interface. Reads box register and checks for optional argument.
+% \begin{macrocode}
+\newcommand\collectboxto[1]{%
+ \@ifnextchar[%
+ {\collectboxto@a{#1}}%
+ {\collectboxto@a{#1}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxto@a}
+% Reads first optional and next mandatory arguments.
+% \begin{macrocode}
+\long\def\collectboxto@a#1[#2]#3{%
+ \@ifnextchar[%
+ {\collectboxto@b{#1}{#2}{#3}}%
+ {\collectboxto@b{#1}{#2}{#3}[]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxto@b}
+% Reads second optional argument.
+% \begin{macrocode}
+\long\def\collectboxto@b#1#2#3[#4]{%
+ \collectboxto@{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxto@}[4]{box register}{code at begin}{code}{code at end}
+% Installs code and starts to collect the box.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@collectboxto}
+% Collects the next brace group as hbox into box register |#1| and executes token |#2| afterwards.
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\nocollectbox@}[3]{<code at begin>}{<code>}{<code at end>}
+% Turns a brace group into \Macro\hbox{<code at begin><content><code at end>}<code>.
+% \begin{macrocode}
+\newcommand\nocollectbox@[3]{%
+ \collectbox@mode
+ \collect@box\bgroup
+ \def\collectbox@code{#3\egroup#2}%
+ #1\bgroup
+ \aftergroup\collectbox@code
+ \collectbox@bgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\nocollectbox@to}[4]{<length>}{<code at begin>}{<code>}{<code at end>}
+% Turns a brace group into \Macro\hbox' to '<length>{<code at begin><content><code at end>}<code>.
+% \begin{macrocode}
+\newcommand\nocollectbox@to[4]{%
+ \collectbox@mode
+ \collect@box to #1\bgroup
+ \def\collectbox@code{#4\egroup#3}%
+ #2\bgroup
+ \aftergroup\collectbox@code
+ \collectbox@bgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxcheckenv}
+% Checks if current macro is used as environment given by |#1|.
+% If so the |bgroup| eating macro is redefined.
+% A suitable end-macro is provided if non exists. All of this is done inside
+% a group to keep thing local.
+% The \Macro\@currenvir macro is redefined to contain \Macro\empty so that
+% macros with the same name can be used inside the environment without collisions.
+% This requires an extra internal group so that this change is reverted before the
+% \Macro\end macro.
+% \begin{macrocode}
+\newcommand*\collectboxcheckenv[1]{%
+ \begingroup
+ \def\@tempa{#1}%
+ \expandafter\endgroup
+ \ifx\@currenvir\@tempa
+ \@collectboxisenv{#1}%
+ \fi
+}
+\def\@collectboxisenv#1{%
+ \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
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@env@endcode}
+% \begin{macrocode}
+\def\collectbox@env@endcode{\ifhmode\unskip\fi}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@envend}
+% \begin{macrocode}
+\def\collectbox@envend{\collectboxenvend}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxenvend}
+% \begin{macrocode}
+\def\collectboxenvend{%
+ \egroup
+ \collectbox@currenvir
+}%
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Tabular collection}
+%
+% \begin{macro}{\collectboxtabular}
+% \begin{macrocode}
+\newcommand\collectboxtabular[3][c]{%
+ \collectbox@tab{tabular}{[#1]{#2}}{}{#3}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxtabularstar}
+% \begin{macrocode}
+\newcommand\collectboxtabularstar[4][c]{%
+ \collectbox@tab{tabular*}{[#1]{#2}{#3}}{}{#4}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectboxarray}
+% \begin{macrocode}
+\newcommand\collectboxarray[2]{%
+ \collectbox@tab{array}{{#1}}{\(}{#2}{\)}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@checkarray}
+% \begin{macrocode}
+\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}%
+ }%
+}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\collectbox@checkarray
+\AtBeginDocument{\collectbox@checkarray}%
+% \end{macrocode}
+%
+% \begin{macro}{\collectbox@dorealarraycr}
+% \begin{macrocode}
+\def\collectbox@dorealarraycr{%
+ \expandafter\collectbox@realarraycr\collectbox@aftercrstuff
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\let\collectbox@aftercrstuff\empty
+% \end{macrocode}
+%
+% \begin{macro}{\collectbox@tab}
+% \begin{macrocode}
+\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=%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collebox@cr}
+% \begin{macrocode}
+\def\collebox@cr{%
+ \@ifstar\collebox@@cr\collebox@@cr%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collebox@@cr}
+% \begin{macrocode}
+\def\collebox@@cr{%
+ \@ifnextchar[%
+ \collebox@@cr@opt
+ {\collebox@@@cr{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collebox@@cr@opt}
+% \begin{macrocode}
+\def\collebox@@cr@opt[#1]{%
+ \collebox@@@cr{[#1]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collebox@@@cr}
+% \begin{macrocode}
+\def\collebox@@@cr#1{%
+ \def\collectbox@aftercrstuff{#1}%
+ \expandafter\collebox@@@@cr
+ \romannumeral-`0%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collebox@@@@cr}
+% \begin{macrocode}
+\def\collebox@@@@cr{%
+ \@ifnextchar\egroup{\collectbox@dorealarraycr\collectbox@aftertab}{%
+ \ifx\@let@token\noalign
+ \expandafter\collectbox@handlenoalign
+ \else
+ \expandafter\collectbox@dorealarraycr
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@handlenoalign}
+% \begin{macrocode}
+\def\collectbox@handlenoalign#1#2{%
+ \collectbox@dorealarraycr
+ \noalign{\bgroup\aftergroup\collectbox@afternoalign#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@handlenextnoalign}
+% \begin{macrocode}
+\def\collectbox@handlenextnoalign#1#2{%
+ \egroup
+ \noalign{\bgroup\aftergroup\collectbox@afternoalign#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@afternoalign}
+% \begin{macrocode}
+\def\collectbox@afternoalign{%
+ \expandafter\collectbox@@afternoalign
+ \romannumeral-`0%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@@afternoalign}
+% \begin{macrocode}
+\def\collectbox@@afternoalign{%
+ \@ifnextchar\egroup{\egroup\collectbox@aftertab}{%
+ \ifx\@let@token\noalign
+ \expandafter\collectbox@handlenextnoalign
+ \else
+ \expandafter\egroup
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\collectbox@aftertab}
+% \begin{macrocode}
+\def\collectbox@aftertab{%
+ \collectbox@endtabenv
+ \afterassignment\collectbox@codeafter
+ \let\@let@token=%
+}
+% \end{macrocode}
+% \end{macro}
+%