LaTeX 是否重新定义了[一些] TeX 基元?

LaTeX 是否重新定义了[一些] TeX 基元?

我读到“TeX 和 LaTeX 有什么区别?“LaTeX 是建立在 TeX 之上的宏集合(扩展)。据推测,TeX 基元在 LaTeX 中的行为应该与在 TeX 中的行为相同。然而,情况似乎并非总是如此。在“\char 在数学模式下如何处理?",解释了为什么\char在文本模式下的行为与数学模式下的行为不同。但这仅限于 TeX。然而,在 LaTeX 中,\char在文本和数学模式下的行为相同,如以下示例所示:

\documentclass{article}  
  \begin{document}
    In text mode, we obtain \char"5. In math mode, we also obtain $\char"5$.
  \end{document}

在 TeX 中,结果有所不同:

In text mode, we obtain \char"5. In math mode, we obtain $\char"5$.
\bye

似乎有些 TeX 基元(至少一个:)\char在 LaTeX 中被重新定义。我想知道 TeX 基元是否必须在 LaTeX 中重新定义。如果是,为什么?还有其他 TeX 基元在 LaTeX 中被重新定义吗?难道 TeX 和 LaTeX 不应该在如此简单的一段代码上产生相同的结果(如示例中所示)吗?

答案1

LaTeX 重新定义了基本元素\input\end\-、以及(在某些情况下)\/。它不会重新定义,但会使用不同的数学代码。\underline\par\char

在纯 TeX 中我们看到

\mathcode`\^^E="023A % \lnot

但是 LaTeX 没有为^^E(ASCII 5) 分配数学代码,因此该值最初为 5。

当 TeX\char<number>在数学模式下处理时,它会使用字符的数学代码,就像直接输入字符一样。因此,在纯 TeX 中,您会得到"3A2 族中的字符 ( \lnot);在 LaTeX 中,您会得到"50 族中的字符。

重新定义基元

  • \input被重新定义以允许\input{<filename>}
  • \end被重新定义以标志环境的终结;
  • \-\/由于技术原因被重新定义;
  • \underline被重新定义为也可用于文本模式。

就而言\par,重新定义对于类似列表的环境至关重要。

为什么纯 TeX 将数学代码分配给 ASCII 5?

因为 Knuth 使用了扩展字符集,而他的键盘可以直接输入 ¬ 等字符。所以他发现为扩展字符集设置数学代码很方便。

相关内容