かすみん日記

暇なときに何か喋ります

【beamer】frame環境内で\defコマンドを使う【LaTeX】

環境内などで\defコマンドによってマクロを定義すれば、その範囲(スコープ)内だけで使えるマクロになります(local macro)。

しかし、スライドのbeamerクラスで用意されるframe環境内で引数を取るlocal macroを定義しようと思ったら怒られました。

ダメ:

\begin{frame}{たいとる}{さぶ}

\def\hoge#1{\relax}

\end{frame}

%% エラー
%% -> Illegal parameter number in definition of \iterate.

どうやら#を使うのがまずいみたいです。

代償はよくわかりませんが、frame環境にfragileオプションを与えれば使えるようになります。

OK:

\begin[fragile]{frame}{たいとる}{さぶ}

\def\hoge#1{\relax}
こんにち\hoge{こんばん}\end{frame}

なんか、vrbという中間ファイルが生成されますが、タイプセット後に消せば問題ないでしょう。

以上。

tex.stackexchange.com