Kann \relax durch ein Leerzeichen ersetzt werden?

Kann \relax durch ein Leerzeichen ersetzt werden?

LaTeX definiert \vecals

\DeclareMathAccent{\vec}{\mathord}{letters}{"7E}

welches schließlich erweitert wird zu

\mathaccent"017E\relax

während plainTeX es definiert als

\def\vec{\mathaccent"017E }

\relaxdurch ein Leerzeichen ersetzen .

Gibt es einen praktischen Unterschied?

Antwort1

Die Syntax für \mathaccentlautet (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 \relaxToken, 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 \relaxals ⟨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 , \DeclareMathAccentdie 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 \relaxfür die Aufgabe besser geeignet ist.

verwandte Informationen