- E-mail: blflatex@gmail.com
- Released under the LaTeX Project Public License v1.3c or later See http://www.latex-project.org/lppl.txt
The package defines \multiexpand, \multiexpandafter, \MultiExpand
and \MultiExpandAfter, replacing large chains of \expandafter.
These four commands take as an argument the number of expansion to be
done. If eTeX is available, this number is evaluated using \numexpr.
Say we want to expand \C five times before \A and \B in \A\B\C.
The traditional approach would be to insert 31 \expandafter before
\A and the same number before \B. With this package one can use
any of
\expandafter\A\expandafter\B\romannumeral\multiexpand{5}\C
\expandafter\A\romannumeral\multiexpandafter{5}\B\C
\MultiExpandAfter{2}\A\MultiExpandAfter{5}\B\C
\MultiExpandAfter{2}\A\MultiExpandAfter{2}\B\MultiExpand{5}\C
In one step of expansion (triggered by the \expandafter's),
\romannumeral\multiexpand{5} expands the following token 5 times,
whereas \romannumeral\multiexpandafter{5} expands the token after
that 5 times. The macros \MultiExpandAfter and \MultiExpand
take two steps of expansion, but do not require \romannumeral.
Another example is that in two steps of expansion,
\MultiExpandAfter{2}\a\MultiExpandAfter{3}{%
\MultiExpandAfter{9}\b\MultiExpandAfter{10}\c\d}
expands \d 10 times, then \c 7 times (9-2), then \b once (3-2).
The package can be built from the file `multiexpand.dtx' by running
pdflatex multiexpand.dtx
pdflatex multiexpand.dtx