名前: . 日時: 2009-11-07 01:43:12 IPアドレス: 59.134.169.*
>>53925 \def\mmodetest{\relax \ifmmode YES!\else NO!\fi\quad} のように \relax を入れてください. # 正確な説明は『The TeXbook』などに頼ってもらうことにし, # 状況を大雑把に説明すると…… align 環境などの & で位置を揃えることのできるディスプレイ数式というのは, 基本的には \halign による表(配列)で,その配列のプリアンブルにおいて 各配列要素を $#$(+ 数式のスタイルなどの調整)という形で配置しています. そして,\halign による配列では,個々の配列要素の読み取りの際に まず,マクロや条件処理を「展開」しながら \omit を探します. その時点ではまだ配列のプリアンブルは解釈されないため, 数式モードにもなっていないということになります. # LaTeX の既存のマクロでも \ifmmode の前に \relax を置いていることが # よくありますが,それはこのような \halign での配列要素の読み取りの # タイミングに由来する問題を回避するための措置です. # 実際,\relax があれば,そこまで読み取った時点で \omit がないことが # 確定し,それ以降は配列のプリアンブルを解釈します.
この書き込みへの返事: