TeXマクロ覚え書き

卒論を進めているのですが、よく出てくる表現があるのでそれをマクロ化しました。ただし、そのマクロは数式モードを使って作られているので、数式内でも数式外でも使えるように、\ifmmodeを使って切り分けるようにしました。

ところが、それを使ってソースをコンパイルすると、意味不明なところでエラーが出るようになってしまいました。実際にそのマクロを使う前の、プリアンブルでエラーが出てしまいます。

原因究明は難航したのですが、「ソースからそのマクロを消しても次のコンパイルにはエラーが残る」ということでようやく理解できました。そのマクロを\sectionの中で使っていたので、一旦auxファイルに書き出されて、次回にそれを読み込むところでエラーを吐いていたのでした。

他のマクロを参考にして解決法を探ってみると、\DeclareRobustCommandというものにたどり着きました。これは、内部で\protectを挟むことでエラーを回避してマクロを定義できるというもので、これを使えばエラーは綺麗に治まりました。