Skip to content

blefloch/latex-multiexpand

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Variations on the \expandafter TeX primitive

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published