
LaTeX define \vec
como
\DeclareMathAccent{\vec}{\mathord}{letters}{"7E}
que eventualmente se expande a
\mathaccent"017E\relax
mientras que PlainTeX lo define como
\def\vec{\mathaccent"017E }
reemplazando \relax
con un espacio.
¿Hay alguna diferencia práctica?
Respuesta1
La sintaxis \mathaccent
es (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 \relax
tokens 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 \relax
se 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 \DeclareMathAccent
que 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 \relax
se adapte mejor al trabajo.