ひさびさにTeXマクロを組んでいて、ちょっとはまってしまったので、備忘録としてメモ。

マクロのオプション変数が空文字かどうかをチェックするルーチンで、直接 \ifx#1\empty ... とすると、#1が空であってもマッチしない。一度マクロで、 \def\hoge{#1} と定義してから \ifx\hoge\empty ... とすれば、#1が空の場合にちゃんとマッチする。

そういえば、以前にもこの \ifx でのトークンの比較ではまったことがある。テックブックを読んでも今一つピンとこないというか、大体こんな感じかなと、中途半端な理解で使っているのがいけないのだろうが。

投稿者 sukarabe

「\ifx でのトークンの比較」に2件のコメントがあります
  1. moonlight さん

    おお、これは良いものをありがとうございます。よくよく考えたら、#1 が単一のトークンじゃないときは \ifx#1 の段階で既にまずいですよね。ということで、もちろん macro にしてトークン同士を比較すべしということでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です