名前: 本田 日時: 2001-12-07 10:20:28 IPアドレス: 202.224.196.*
>>4277 >という方式では,上のサンプルでエラーになります。amsmath は >\@ifnextchar ではなく \\ を再定義すべきだったんでしょうね。 あっ!そうか。。。\\の問題がありましたね. 実際はこの問題は非amsでarray環境を使っても起こりますし, \twocolumnなどでも発生します FTEXのQ&Aにあるように, \\{}とか\\\relaxなどで, 明示的にTeXに区切りのトークンを与えると 動作するようになります. それで,奥村先生の提示された場合は 今度は,\@ifstarと\@xarraycrが原因となります. tDBさんのおっしゃるところの「もぐらたたき」の様相を呈してきますが, #私,もぐらたたきは嫌いじゃないんです(^^; \makeatletter \let\ams@ifnextchar\new@ifnextchar \let\new@ifnextchar\@ifnextchar \def\@ifstar#1{\ams@ifnextchar *{\@firstoftwo{#1}}} \def\@xarraycr{\ams@ifnextchar[\@argarraycr{\ifnum0=`{\fi}${}\cr}} \makeatother で逃げることは可能です. #LaTeX2eのオリジナルの定義を同名で変えるのでお行儀は悪いですが・・・ しかし,更にamsの\mathp@cr,\math@cr@,\math@cr@@,\math@cr@@@ なども同様に再定義しないと今度はalign系で同様の問題が起きてしまいます. どうせやるなら小手先ではなく徹底的にやるか, \\{}とするかが現実的かなとも思います.
この書き込みへの返事: