
LaTeX definiert \vec
als
\DeclareMathAccent{\vec}{\mathord}{letters}{"7E}
welches schließlich erweitert wird zu
\mathaccent"017E\relax
während plainTeX es definiert als
\def\vec{\mathaccent"017E }
\relax
durch ein Leerzeichen ersetzen .
Gibt es einen praktischen Unterschied?
Antwort1
Die Syntax für \mathaccent
lautet (TeXbook, S. 291)
\mathaccent
⟨15-Bit-Zahl⟩⟨Mathematisches Feld⟩
Eine ⟨15-Bit-Zahl⟩ ist eine Ganzzahl (in jeder von LaTeX erlaubten Denotation) im Bereich 0–2 15 . Was ist ein ⟨mathematisches Feld⟩? Wir finden es auf Seite 289
⟨Mathematisches Feld⟩ → ⟨Füllzeichen⟩ ⟨Mathematisches Symbol⟩ | ⟨Füllzeichen⟩
{
⟨Mathematikmodus-Material⟩}
Ein ⟨Füller⟩ ist eine beliebige Folge von Leerzeichen-Token und \relax
Token, die ignoriert werden (Erweiterung durchführen), wenn der Eingabestrom verarbeitet wird und nach etwas gesucht wird, das der Syntaxregel entspricht.
Daher wird es in LaTeX \relax
als ⟨Füllzeichen⟩ verschlungen, während in einfachem TeX das Leerzeichen die Angabe für die Zahl beendet und ebenfalls ignoriert wird.
Warum verwendet LaTeX \relax
? Die Antwort liegt in der Definition von , \DeclareMathAccent
die intern verwendet \set@mathaccent
:
% latex.ltx, line 3596:
\def\set@mathaccent#1#2#3#4{%
\xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
Die Wahl kann davon abhängen, ob das Schreiben in eine Hilfsdatei \relax
für die Aufgabe besser geeignet ist.