Кажется, возникает конфликт, когда я использую 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
, или - удвоить
#
дважды, т. е. учетверить их.
Это ведет к
\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
, а есть лишь обычные тонкости определения и использования макросов с аргументами во фреймах.