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 中重新定義。如果是,為什麼? LaTeX 中是否重新定義了其他 TeX 原語?難道 TeX 和 LaTeX 不應該在如此簡單的程式碼中產生相同的結果(如範例所示)嗎?

答案1

LaTeX 重新定義了原語\input, \end, \-, \/,\underline以及在某些情況下的\par。它不會重新定義\char,但使用不同的數學代碼。

在 plain TeX 我們看到

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

但 LaTeX 沒有為^^E(ASCII 5) 分配數學代碼,因此該值與最初一樣,即 5。

當 TeX\char<number>在數學模式下處理時,它使用字元的數學代碼,就像直接輸入字元一樣。所以在 plain TeX 中你會得到"3A家族 2 中的字元(\lnot );在 LaTeX 中你會得到"5家族 0 中的字元。

重新定義原語

  • \input被重新定義為允許\input{<filename>}
  • \end被重新定義以標記環境的結束;
  • \-\/因技術原因重新定義;
  • \underline被重新定義為也可以在文字模式下使用。

據,直到...為止\par,重新定義對於類似清單的環境至關重要。

為什麼 plain TeX 要將數學代碼分配給 ASCII 5?

因為 Knuth 使用了擴充字元集,而他的鍵盤允許直接輸入 Ø 等字元。所以他發現為擴展字符集設定數學代碼很方便。

相關內容