ひさびさにTeXマクロを組んでいて、ちょっとはまってしまったので、備忘録としてメモ。
マクロのオプション変数が空文字かどうかをチェックするルーチンで、直接 \ifx#1\empty ... とすると、#1が空であってもマッチしない。一度マクロで、 \def\hoge{#1} と定義してから \ifx\hoge\empty ... とすれば、#1が空の場合にちゃんとマッチする。
そういえば、以前にもこの \ifx でのトークンの比較ではまったことがある。テックブックを読んでも今一つピンとこないというか、大体こんな感じかなと、中途半端な理解で使っているのがいけないのだろうが。
以前このページを見つけて,色々と腑に落ちたので参考にどうぞ。
いのうえ・こういち 氏のページです。
http://www.ma.ns.musashi-tech.ac.jp/Pages/TeX/
moonlight さん
おお、これは良いものをありがとうございます。よくよく考えたら、#1 が単一のトークンじゃないときは \ifx#1 の段階で既にまずいですよね。ということで、もちろん macro にしてトークン同士を比較すべしということでした。