¿Se puede reemplazar \relax por un espacio?

¿Se puede reemplazar \relax por un espacio?

LaTeX define \veccomo

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

que eventualmente se expande a

\mathaccent"017E\relax

mientras que PlainTeX lo define como

\def\vec{\mathaccent"017E }

reemplazando \relaxcon un espacio.

¿Hay alguna diferencia práctica?

Respuesta1

La sintaxis \mathaccentes (TeXbook, p. 291)

\mathaccent⟨Número de 15 bits⟩⟨campo matemático⟩

Un ⟨número de 15 bits⟩ es un número entero (en cualquier denotación permitida por LaTeX) en el rango 0–2 15 . ¿Qué es un ⟨campo matemático⟩? Lo encontramos en la página 289.

⟨campo matemático⟩ → ⟨relleno⟩⟨símbolo matemático⟩ | ⟨relleno⟩ {⟨material de modo matemático⟩}

Un ⟨relleno⟩ es cualquier secuencia de tokens de espacio y \relaxtokens que se ignoran (haciendo expansión) al procesar el flujo de entrada en busca de algo que se ajuste a la regla de sintaxis.

Por lo tanto, en LaTeX \relaxse engullirá como un ⟨relleno⟩, mientras que en TeX simple el espacio termina la especificación del número y también se ignora.

¿Por qué se utiliza LaTeX \relax? La respuesta está en la definición de \DeclareMathAccentque utiliza internamente \set@mathaccent:

% latex.ltx, line 3596:
\def\set@mathaccent#1#2#3#4{%
  \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}

La elección puede depender del hecho de que al escribir en un archivo auxiliar \relaxse adapte mejor al trabajo.

información relacionada