私は「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 プリミティブ (少なくとも 1 つ: \char
) は LaTeX で再定義されているようです。TeX プリミティブを LaTeX で再定義する必要があるかどうかを知りたいです。必要な場合は、その理由を教えてください。LaTeX で再定義されている他の TeX プリミティブはありますか? このような単純なコード (例のように) では、TeX と LaTeX は同じ結果を生成するのが想定されていませんか?
答え1
LaTeX は、プリミティブ\input
、\end
、、を再定義し、コンテキストによっては も再定義します。 は再定義されませんが、異なる数式コードが使用されます。\-
\/
\underline
\par
\char
プレーンTeXでは
\mathcode`\^^E="023A % \lnot
しかし、LaTeX は (ASCII 5) に数学コードを割り当てない^^E
ので、値は初期値と同じ 5 になります。
TeX が\char<number>
数式モードで処理する場合、文字が直接入力されたかのように、文字の数式コードが使用されます。したがって、プレーン TeX では"3A
ファミリー 2 ( ) の文字が取得され、LaTeX ではファミリー 0 の\lnot
文字が取得されます。"5
再定義されたプリミティブ
\input
を許可するように再定義されます\input{<filename>}
。\end
環境の終了を示すために再定義されます。\-
\/
技術的な理由により再定義されます。\underline
テキスト モードでも使用できるように再定義されます。
関係する限り\par
、再定義はリストのような環境にとって不可欠です。
なぜプレーン TeX は数学コードを ASCII 5 に割り当てるのでしょうか?
Knuth は拡張文字セットを使用しており、キーボードで ¬ やその他の文字を直接入力できるため、拡張文字セットに数学コードを設定するのが便利だと考えたのです。