Eu li em "Qual é a diferença entre TeX e LaTeX?"que o LaTeX é uma coleção de macros (uma extensão) construída sobre o TeX. Supostamente, as primitivas do TeX deveriam então se comportar no LaTeX da mesma maneira que no TeX. No entanto, parece que nem sempre é o caso. Em "Como \char é processado no modo matemático?", é explicado por que \char
o modo texto se comporta de maneira diferente do modo matemático. Mas isso é apenas no TeX. No LaTeX, entretanto, \char
ele se comporta de forma idêntica nos modos texto e matemático, como pode ser visto no exemplo a seguir:
\documentclass{article}
\begin{document}
In text mode, we obtain \char"5. In math mode, we also obtain $\char"5$.
\end{document}
No TeX, o resultado é diferente:
In text mode, we obtain \char"5. In math mode, we obtain $\char"5$.
\bye
Parece que algumas primitivas do TeX (pelo menos uma \char
:) foram redefinidas no LaTeX. Gostaria de saber se as primitivas do TeX devem ser redefinidas no LaTeX. Se sim, por quê? Existem outras primitivas do TeX que são redefinidas no LaTeX? Não se espera que o TeX e o LaTeX produzam o mesmo resultado em um trecho de código tão simples (como no exemplo)?
Responder1
LaTeX redefine os primitivos \input
, \end
, \-
, \/
e \underline
, em alguns contextos, \par
. Ele não redefine \char
, mas usa códigos matemáticos diferentes.
No TeX simples, vemos
\mathcode`\^^E="023A % \lnot
mas o LaTeX não atribui um código matemático para ^^E
(ASCII 5), então o valor é o inicial, ou seja, 5.
Quando o TeX processa \char<number>
no modo matemático, ele usa o código matemático do caractere, como se o caractere tivesse sido inserido diretamente. Então, no TeX simples você obtém o personagem "3A
da família 2 ( \lnot
); no LaTeX você obtém caracteres "5
da família 0.
Primitivas redefinidas
\input
é redefinido para permitir\input{<filename>}
;\end
é redefinido para marcar o fim dos ambientes;\-
e\/
são redefinidos por razões técnicas;\underline
é redefinido para ser usado também em modo texto.
No que \par
diz respeito, as redefinições são essenciais para ambientes do tipo lista.
Por que o TeX simples atribui um código matemático ao ASCII 5?
Porque Knuth usava conjuntos de caracteres estendidos e seu teclado permitia inserir diretamente ¬ e outros caracteres. Então ele achou conveniente definir códigos matemáticos para o conjunto estendido de caracteres.