Leí en "¿Cuál es la diferencia entre TeX y LaTeX?" que LaTeX es una colección de macros (una extensión) construida sobre TeX. Supuestamente, las primitivas de TeX deberían comportarse en LaTeX de la misma manera que lo hacen en TeX. Sin embargo, parece que no siempre es así. En "¿Cómo se procesa \char en modo matemático?", se explica por qué \char
se comporta de manera diferente en modo texto que en modo matemático. Pero esto es solo en TeX. Sin embargo, en LaTeX \char
se comporta de manera idéntica en los modos texto y matemático, como se puede ver en el siguiente ejemplo:
\documentclass{article}
\begin{document}
In text mode, we obtain \char"5. In math mode, we also obtain $\char"5$.
\end{document}
En TeX, el resultado es diferente:
In text mode, we obtain \char"5. In math mode, we obtain $\char"5$.
\bye
Parece que algunas primitivas de TeX (al menos una \char
:) están redefinidas en LaTeX. Me gustaría saber si las primitivas TeX deben redefinirse en LaTeX. ¿Si es así por qué? ¿Existen otras primitivas de TeX que se redefinen en LaTeX? ¿No se espera que TeX y LaTeX produzcan el mismo resultado en un código tan simple (como en el ejemplo)?
Respuesta1
LaTeX redefine las primitivas \input
, \end
, \-
, \/
y \underline
, en algunos contextos, \par
. No redefine \char
, pero utiliza códigos matemáticos diferentes.
En TeX simple vemos
\mathcode`\^^E="023A % \lnot
pero LaTeX no asigna un código matemático a ^^E
(ASCII 5), por lo que el valor es el inicial, es decir, 5.
Cuando TeX procesa \char<number>
en modo matemático, utiliza el código matemático del carácter, como si el carácter se ingresara directamente. Entonces, en TeX simple, obtienes el carácter "3A
de la familia 2 ( \lnot
); en LaTeX obtienes el carácter "5
de la familia 0.
Primitivas redefinidas
\input
se redefine para permitir\input{<filename>}
;\end
se redefine para marcar el fin de los ambientes;\-
y\/
se redefinen por razones técnicas;\underline
se redefine para usarse también en modo texto.
En lo que \par
a nosotros respecta, las redefiniciones son esenciales para entornos tipo lista.
¿Por qué TeX simple asigna un código matemático a ASCII 5?
Porque Knuth usó conjuntos de caracteres extendidos y su teclado permitía ingresar directamente ¬ y otros caracteres. Por eso le resultó conveniente establecer códigos matemáticos para el conjunto de caracteres extendido.