
Nachdem ich einige Kapitel des Texbuchs gelesen habe, weiß ich, dass Tex Eingabezeilen aus der Befehlszeile oder aus Dateien frisst und sie dann in Token umwandelt. Wenn diese Token in seinen Magen-Darm-Trakt gelangen, bereitet Tex sie auf die Verdauung vor, indem es sie in Boxen, Klebstoffe und anderes Zeug umwandelt und dann einige Listen erstellt.
Bezüglich Makros: In welchem Stadium speichert Tex seine Makrodefinition, in welchem Stadium führt Tex die Makroerweiterung für den Tex-Ersatz durch?
Antwort1
Das ist einfach! TeX führt immer eine Makroerweiterung durch, außer wenn es dies nicht tut.
Auf Seite 215, im zweiten doppelt gefährlichen Absatz, lesen wir
Die Expansion wird zu folgenden Zeitpunkten unterdrückt:
- Wenn Token während der Fehlerbehebung gelöscht werden (siehe Kapitel 6).
- Wenn Token übersprungen werden, weil bedingter Text ignoriert wird.
- Wenn TeX die Argumente eines Makros liest.
- Wenn TeX eine Steuersequenz liest, die durch
\let
,\futurelet
,\def
,\gdef
,\edef
,\xdef
,\chardef
,\mathchardef
,\countdef
, ,\dimendef
,\skipdef
,\muskipdef
,\toksdef
,\read
, und definiert wird\font
.\expandafter
Wenn TeX Argument-Token für ,\noexpand
,\string
,\meaning
, ,\let
,\futurelet
,\ifx
,\show
,\afterassignment
, liest\aftergroup
.- Wenn TeX den Parametertext eines
\def
,\gdef
,\edef
, oder aufnimmt\xdef
.- Wenn TeX den Ersetzungstext für ein
\def
oder\gdef
oder aufnimmt\read
; oder den Text einer Token-Variable wie\everypar
oder\toks0
; oder die Token-Liste für\uppercase
oder\lowercase
oder\write
. (Die Token-Liste für\write
wird später erweitert, wenn sie tatsächlich in eine Datei ausgegeben wird.)- Wenn TeX die Präambel einer Ausrichtung liest, außer nach einem Token für den primitiven Befehl
\span
oder beim Lesen des „after“\tabskip
.- Starten Sie den Mathematikmodus direkt nach einem Token wie
$
3 , um zu sehen, ob ein weiteres Token der Kategorie 3 folgt.- Direkt nach einem
`
12- Token beginnt eine alphabetische Konstante.
Nicht unvernünftig, oder? Bei Definitionen wollen wir, dass nichts erweitert wird (außer \edef
und \xdef
), und der vierte, fünfte, sechste und siebte Aufzählungspunkt befasst sich damit. Ähnlich verhält es sich, wenn wir eine Tokenliste in einem Register oder in speichern wollen \write
.
Ebenso darf das Token nach \expandafter
, \noexpand
, \afterassignment
oder \aftergroup
aus offensichtlichen Gründen nicht erweitert werden; dies wird später geschehen, wenn TeX es zum gegebenen Zeitpunkt noch einmal untersucht.
Der letzte Punkt hat einen technischen Grund: Wenn Sie auf eine alphabetische Konstante verweisen möchten, die einem Zeichen mit \catcode
0, 5, 9, 13, 14 oder 15 entspricht, kann diese mit einem Backslash davor „maskiert“ werden, aber das bildet eigentlich keine Steuersequenz. Sie können also tun, `\^^M
wenn Sie auf die Konstante 13 verweisen möchten, oder tun \chardef\%=`\%
.
Der zweite Punkt kann durch eine wichtige Bemerkung ergänzt werden: Ungeachtet dessen, dass TeX beim Überspringen von bedingtem Text keine Erweiterung vornimmt,tutUntersuchen Sie die Token, um Bedingungen mit ihrem \else
oder abzugleichen \fi
. Jeder Token, der \let
zu einer primitiven Bedingung gehört, zählt in dieser Hinsicht zu \else
oder .\fi
Antwort2
Im TextTeX auf den Punkt gebrachtDie Befehle und ihre Parameter werden in blauer Farbe geschrieben, aber wenn ein Parameter nicht erweitert ist, wird er in roter Farbe geschrieben. Hier in blauer Farbe geschriebene Parameter werden nach der Erweiterung gelesen. Siehe diesen Text auf Seite 9, wo die Zusammenfassung der TeX-Grundkonstrukte beginnt.