
LaTeXでは\vec
次のように定義される
\DeclareMathAccent{\vec}{\mathord}{letters}{"7E}
最終的には
\mathaccent"017E\relax
一方、plainTeXでは次のように定義されています
\def\vec{\mathaccent"017E }
\relax
スペースに置き換えます。
実質的な違いはあるのでしょうか?
答え1
の構文は\mathaccent
(TeXbook、p. 291)です。
\mathaccent
⟨15ビット数⟩⟨数学フィールド⟩
⟨15ビット数⟩は、0~2 15 の範囲の整数(LaTeXで許可されている任意の表記法)です。⟨数式フィールド⟩とは何でしょうか?289ページにあります。
⟨数式フィールド⟩ → ⟨フィラー⟩⟨数式記号⟩ | ⟨フィラー⟩
{
⟨数式モードマテリアル⟩}
\relax
⟨フィラー⟩は、入力ストリームを処理して構文規則に適合するものを探すときに無視される(拡張される)スペース トークンとトークンのシーケンスです。
したがって、LaTeX ではスペースは\relax
⟨フィラー⟩ として解釈されますが、プレーン TeX ではスペースは数値の指定を終了し、無視されます。
LaTeX はなぜ を使用するのでしょうか? その答えは、内部的に を使用する\relax
の定義にあります。\DeclareMathAccent
\set@mathaccent
% latex.ltx, line 3596:
\def\set@mathaccent#1#2#3#4{%
\xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
選択は、補助ファイルへの書き込みが\relax
ジョブに適しているかどうかによって決まる場合があります。