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
从某种程度上来说,这是这个问题等等。正如 Martin Scharrer 解释的那样,
框架环境是一个伪环境,即实际上是
\frame{ .. }
伪装的。
这意味着我们必须小心#
。forest
也不例外,因此选项如下:
- 使用该
fragile
选项,或 - 将
#
其加倍,即增加四倍。
这导致
\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}
这产生两个相同的帧:
forest
特别是,和之间没有真正的冲突beamer
,只是在框架中定义和使用带有参数的宏的通常微妙之处。