Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

TeX/expandafter

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Synopsis \expandafter <macro> <tokens> Description The \expandafter command delays expanding a macro until its arguments have been expanded. Examples \def\a[#1]{A's argument was `#1'} \def\args{[FOO]} \a\args will not work, saying "! Use of \a doesn't match its definition." This is because while defining \a, the first argument (denoted #1) appeared in square braces. Therefore, \a expects its first argument to appear in square braces, while in \a\args, the immediate character after \a is not a left square bracket. Using \expandafter, we can write \expandafter\a\args This expands \args before \a, as if we had written the following in the first place: \a[FOO] As a result, TeX will print A's argument was `FOO'. The \expandafter command first expands the tokens following <macro>, and then expands <macro>, with the expanded <tokens> following it as if they had been typed in the file. Multiple invocations One sometimes sees long chains of expandafters, which can normally be read as "expand after N", e.g. % Chain of expandafters leads to \pra having definition ``\onelevelexpanded'' \def\onelevelexpanded{Page={\the\count0} } \def\mycommandcontents{\onelevelexpanded} \ea\def\ea\pra\ea{\mycommandcontents} This expands \mycommandcontents only once (in contrast to TeX/edef). References See Stephan Bechtolsheim's article.