# Variations on the `\expandafter`TeX primitive

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 e 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