Directory macros/generic/multiexpand
Variations on the \expandafter
TeX primitive
- 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
Download the contents of this package in one zip archive (372.1k).
multiexpand – Variations on the primitive command \expandafter
The package provides two user commands; one that performs multiple expansions, and one that does multiple \expandafter operations, in a single macro call.
The author suggests that the same effect could be provided by use of the command variant mechanisms of LaTeX 3 (see, for example, the interface documentation of the experimental LaTeX 3 kernel).
Package | multiexpand |
Bug tracker | https://github.com/blefloch/latex-multiexpand/issues |
Repository | https://github.com/blefloch/latex-multiexpand |
Version | 1.5 2017-11-29 |
Licenses | The LaTeX Project Public License 1.3c |
Copyright | 2011–2017 Bruno Le Floch |
Maintainer | Bruno Le Floch |
Contained in | TeX Live as multiexpand MiKTeX as multiexpand |
Topics | Macro support |