Re: \inaccessible?

名前: .
日時: 2008-10-20 11:32:13
IPアドレス: 59.134.169.*

>>52167 >\begin{testone}[] > & & {\sqrt{n^2 + 1}} - n \cr > & = & \sqrt{n^2 + 1} + n >\end{testone} の場合,\testone の第 2 オプション引数の読み取り時に \@let@token が & のコピーになってしまいます. その状態のままで \sqrt に伴って現れる \@ifnextchar の展開結果に \@let@token(= &)が現れると,\halign の各配列項目の範囲が誤認されるようです. %%% もっとも,「なぜ testone 環境内の 1 行目のように {,} で囲むと %%% エラーが生じないか」という点についてはもう少し調べないと判然としませんが. %%% 「\halign の中の & はグルーピングを考慮する」ということに基づいて %%% 理解できなくもないようです. ここでは,array 環境などと同様にオプション引数の後に何らかの必須の引数を 導入するか,amsmath パッケージが用いているような「空白文字をスキップせずに 次の文字を調べるマクロ」を用いるとよいのではないでしょうか. %%% なお,array 環境や tabular 環境でこの種の問題が生じないのは, %%% \begin{array}[c]{lcr} や \begin{array}{lcr} のように必ず必須の引数があり, %%% オプション引数の有無によらず \@let@token が & のような「危険な」ものに %%% なった状態で \halign を処理することにはならないことによるものと思われます.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)