forest
プレゼンテーションでツリーを構築するためにパッケージを使用しているときに競合が発生しているようですbeamer
。 オプションを使用するたびにdelay
( との組み合わせでのみcontent
使用でき、それ以外では使用していない可能性があります)、次のエラーが表示されます。
! \beamer@doifinframe の定義に不正なパラメータ番号があります。
エラーにもかかわらず、Overleaf では PDF が生成され、必要なツリーが提供されますが、TeXworks はそれほど親切ではありません。
エラーの原因は何ですか、またそれを解決するにはどうすればよいですか?
ムウェ(からforest
ドキュメンテーション)
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}
\begin{forest}
[roman, delay={for children={content=\romannumeral##1}}
[1][2][3][4]
]\end{forest}
\end{frame}
\end{document}
レンダリング:
答え1
ある意味、これはこの質問他にもたくさんあります。マーティン・シャラーは次のように説明しています。
フレーム環境は疑似環境、つまり実際には
\frame{ .. }
偽装された環境です。
つまり、 には注意が必要です#
。forest
も例外ではありません。オプションは次のようになります。
- オプションを使用する
fragile
か、 - 2 倍を
#
2 倍、つまり 4 倍にします。
これはにつながります
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}[fragile]
\begin{forest}
[roman, delay={for children={content=\romannumeral#1}}
[1][2][3][4]
]\end{forest}
\end{frame}
\begin{frame}
\begin{forest}
[roman, delay={for children={content=\romannumeral####1}}
[1][2][3][4]
]\end{forest}
\end{frame}
\end{document}
これにより、2 つの同一のフレームが生成されます。
特に、forest
との間には実際の競合はなくbeamer
、フレーム内で引数を持つマクロを定義して使用するという通常の微妙な違いがあるだけです。