Wenn sie nicht eines Um die Frage zu beantworten, sollte zunächst geklärt werden, was ein Makro und was Expansion ist.
TeXs und damit LaTeXs Kontrollsequenzen sind entweder Primitive (= von TeXs Primitiven sind, sind Kontrollsequenzen fast immer Makros, d.h. sie TeX direkt bereitgestellte Kontrollsequenzen), Register (z.B. Längen) oder Makros.
Letztere wurden mit `\def` (ein TeX-Primitives) oder einem seiner Verwandten (oder mit LaTeXs LaTeXs
äquivalent `\newcommand`) `\newcommand` und Verwandten) definiert. Das kann im Kernel des verwendeten Formats (also z.B. LaTeX) geschehen sein, in einer eingebundenen Datei (z.B. ein LaTeX-Paket) oder man hat es selbst gemacht:
\def<kontrollsequenz><parameter spez>{<ersetzungstext>}
Wenn TeXs Mund (aka _mouth_) ein Makro sieht, schaut es nach, wie die Definition lautet, ob und welche Parameter gelesen werden müssen und tauscht schließlich das Makro samt Parameter mit dem Ersetzungstext aus. Dieser **Dieser Vorgang wird als Expansion bezeichnet. Dann bezeichnet**. Danach schaut der Mund, was als nächstes im Inputstream kommt.
\def\bla{einem bla Makro}
\def\blub#1{einem Blub Makro mit #1}
ein text mit \blub\bla, geht aber weiter
eine Expansion => ein text mit einem Blub Makro mit \bla, geht aber weiter
weitere Expansion => ein text mit einem Blub Makro mit einem bla Makro, geht aber weiter
\def\a{\b}
\def\b{\c}
\def\c{d}
\a =eine Expansion=> \b =eine Expansion=> \c =eine Expansion=> d
Viele von TeXs Primitiven Primitiven<sup>1</sup> sind nicht expandierbar, das heißt, sie bleiben so stehen wie sie sind. [Dazu gehört z.B. `\\relax`][1], genauso alle, die irgendwelche Zuweisungen vornehmen (`\def`, `\let`, ...). Sie erledigen ihre Arbeit in TeXs Bauch (aka _stomach_). Konsequenzen D. E. Knuth hat das im Appendix D des TeXbooks folgendermaßen beschrieben:
> TeX’s control sequences are divided
> into two main categories, “expandable”
> and “unexpandable”; the former
> category includes all macros and
> `\if...\fi` tests, as well as special
> operations like `\the` and `\input`,
> while the latter category includes the
> primitive commands listed in Chapter
> 24. The expansion of expandable tokens takes place in TeX’s “mouth,” but
> primitive commands (including
> assignments) are done in TeX’s
> “stomach.” One important consequence
> of this structure is that it is
> impossible to redefine a control
> sequence or to advance a register
> while TeX is expanding the token list
> of, say, a `\message` or `\write`
> command; assignment operations are
> done only when TeX is building a
> vertical or horizontal or math list.
**Das heißt also, _alle_ Makros sind expandierbar**. Jedenfalls grundsätzlich. Allerdings wird oft gesagt, das sie nicht _vollständig expandierbar_ sind, wenn ihr Ersetzungstext nicht-expandierbare Kontrollsequenzen enthält, etwa, wenn der Ersetzungstext seinerseits Zuweisungen vornimmt: `\def\foo#1{\gdef\@foo{#1}`. Das oben definierte Makro `\a` ist übrigens vollständig expandierbar:
\a =vollständige Expansion=> d
Nicht vollständig expandierbar wäre z.B. folgendes Makro:
\def\A{\def\B{C}}
Wenn ein Makro nicht vollständig expandierbar ist, hat das Konsequenzen in Anweisungen, die ihren Inhalt expandieren, vollständig expandieren (wollen/müssen), wie `\edef` oder `\write`, siehe auch [diese Frage und ihre Antworten über zerbrechliche und robuste Befehle][2]. D. E. Knuth hat das Befehle][2]<sup>2</sup>. Dort kann es Probleme bereiten, wenn nicht geeignete Maßnahmen ergriffen werden.
\edef\keinproblem{\a}
\show\keinproblem
% im Appendix D des TeXbooks folgendermaßen beschrieben:
> TeX’s Log:
> \keinproblem=macro:
->d.
\edef\problem{\A}
% im Log:
! Undefined control sequences are divided
> into two main categories, “expandable”
> and “unexpandable”; the former
> category includes all macros and
> `\if...\fi` tests, as well as special
> operations like `\the` and `\input`,
> while the latter category includes the
> primitive commands listed in Chapter
> 24. The expansion of expandable tokens takes place in TeX’s “mouth,” but
> primitive commands (including
> assignments) are done in TeX’s
> “stomach.” One important consequence
> of this structure is that it is
> impossible to redefine a control
> sequence or to advance a register
> while TeX is expanding the token list
> of, say, a `\message` or `\write`
> command; assignment operations are
> done only when TeX is building a
> vertical or horizontal or math list.
**Das heißt also, _alle_ Makros sind expandierbar**. Allerdings wird oft gesagt, das sie sequence.
\A ->\def \B
{C}
Im zweiten Fall gibt es ein Problem: `\edef` versucht `\def` zu expandieren, was nicht _vollständig expandierbar_ sind, wenn ihr Ersetzungstext nicht-expandierbare Kontrollsequenzen enthält (etwa, wenn der Ersetzungstext seinerseits Zuweisungen vornimmt: `\def\foo#1{\gdef\@foo{#1}`).
geht, weshalb es stehen bleibt (wie es ein Buchstabe auch tun würde). Dann versucht es `\B` zu expandieren, was zum Fehler führt, da es nicht existiert. (Würde es schon existieren, gäbe es andere ungewünschte Effekte).
Mit e-TeX gibt es außerdem übrigens das Primitive `\protected`, das ermöglicht, nicht-expandierbare Kontrollsequenzen Makros zu definieren (`\protected\def\foo#1{\gdef\@foo{#1}`). Solche nicht-expandierbaren Kontrollsequenzen Makros werden zwar im Mund expandiert<sup>1</sup>, expandiert<sup>3</sup>, nicht aber in einem `\edef` o.ä.
o.ä., wo sie sich ähnlich einem `\relax` verhalten.
----------
1. siehe auch Kommentare zu dieser Antwort.
2. Diese Art der Expansion wir in expl3 (LaTeX3s Programmierschicht) als x-Expansion ( _exhaustive_) genannt
3. man korrigiere mich bitte, wenn das nicht stimmt.
[1]: http://texwelt.de/wissen/fragen/894/was-macht-relax
[2]: http://texwelt.de/wissen/fragen/68/was-sind-zerbrechliche-befehle-und-bewegliche-argumente