Re: 行頭での \ifmmode

名前: .
日時: 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 がないことが # 確定し,それ以降は配列のプリアンブルを解釈します.

この書き込みへの返事:

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