
次の m(non-)we を考えてみましょう。
\documentclass{standalone}
\begin{document}
Foo & Bar
\end{document}
ビルドは失敗します
! Misplaced alignment tab character &.
&
コードから文字を削除すると、完全に正常な PDF が生成されます。
プレーンTeXでも同じように動作し、
Foo & Bar
\bye
同じエラーが発生します。
&
これまで、表形式と配列の環境でしか使用されていませんでした。なぜでしょうか?
\tabular
例えば、を環境内でのみ特殊文字として定義し、環境外では通常の文字として定義する\endtabular
ことはできないでしょうか?&
表形式および配列環境の外側では、なぜ&
ドキュメントを分割する必要があるのでしょうか?
質問を言い換えると、「配置タブ文字とは何ですか? また、通常はどこに配置するのですか?」
答え1
フォーマットまたはユーザーが & (またはその他の記号) の catcode をグローバルに 4 に設定していないと仮定します。
このような文字をローカルに保持したい場合(\nc
常に「新しい列」などのコマンドを使用しない場合)は、どのような結果になるでしょうか。
- 毎表形式のような環境では、文字を整列タブとして設定する必要があり、どの文字を使用するかについて合意する必要があります。これには多くのパッチ適用が必要になります。当然、これは、フォーマットの作成時に実行されなかった理由の議論にはなりません。
- 何らかのコマンドの引数で tabular が使用されている場合、この文字を使用することはできません。たとえば、フッターやヘッダー、手紙の宛先、著者リスト、ビーマー フレームで tabular を使用すると問題が発生します。当然、代替としてコマンドを定義することもできますが、ユーザーはこのコマンドがいつ必要になるかを理解する必要があります。
配置タブをローカルで無効にするのはかなり難しいでしょう。たとえば、現在では次のようにたくさんの & を含む表を簡単に入力できます。
\documentclass{article} \begin{document} \begingroup \catcode`\&=12 \catcode`!=4 \begin{tabular}{ll} a & b ! c & d \end{tabular} \endgroup \end{document}
しかし、tabular が & の catcode をリセットすると、動作しなくなります。そのため、このような操作を可能にするには、いくつかのフックが必要になります。また、tabular のような環境すべてで必要になります。
全体的に、パッケージ作成者とユーザーにとって多くのことがより困難になるでしょう。 入力することを学ぶ方が簡単です\&
。
答え2
あなたが尋ねる:
& が表形式環境以外で特別なのはなぜですか?
&
質問がうまく設定されていないと思います。それは特別なことだと思いますどこにでも外の環境だけでなくtabular
、キャラクター&
はカテゴリーコード 4-- 「配置タブ」 -- これまでに出会ったすべての TeX および LaTeX 形式で。この catcode 設定により、 のtabular
ような環境 ( 、tabular*
、tabularx
などlongtable
) だけでなく、array
環境、非推奨の環境、パッケージeqnarray
の一部の表示数式環境、パッケージの 環境、およびおそらくかなりの数の追加環境で配置タブ文字として使用できるようになります。amsmath
IEEEeqnarray
IEEEtrantools
&
デフォルトでcatcode 4を割り当てる利点は、すべてのパッケージ作成者が(そして、率直に言って、すべき) は、&
catcode 4 であると仮定してコードを記述します。このデフォルトがないと、一部のパッケージ作成者は を&
アライメント タブ文字として選択し、他の作成者は を選択したり@
、その他の文字を選択したりする可能性があります。このような結果は、ほとんどのユーザーにとって明らかに劣るものになります。なぜなら、どの文字がどの環境でアライメント タブ機能として機能するかをユーザーが記憶する必要があるためです。
逆に、特別なことをしたくない&
、つまり catcode を変更したくない場合は、 と入力する必要があります\&
。