我讀到“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 使用了擴充字元集,而他的鍵盤允許直接輸入 Ø 等字元。所以他發現為擴展字符集設定數學代碼很方便。