Conflito entre beamer e floresta

Conflito entre beamer e floresta

Parece haver um conflito quando estou usando o forestpacote para construir árvores em uma beamerapresentação. Sempre que uso a delayopção (possivelmente apenas em combinação com content, não usei de outra forma), aparece o seguinte erro:

! Número de parâmetro ilegal na definição de \beamer@doifinframe.

Apesar do erro, é gerado um pdf no Overleaf, fornecendo a árvore que eu queria, mas o TeXworks não é tão gentil comigo.

O que está causando o erro e como resolvê-lo?

MWE(deforestdocumentação)

\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}

O que renderiza:

resultado

Responder1

De certa forma, esta é uma duplicata paraessa questãoe muitos outros. Como explica Martin Scharrer,

O ambiente de quadro é um pseudoambiente, ou seja, realmente \frame{ .. }disfarçado.

O que isso significa é que é preciso ter cuidado com o arquivo #. forestnão é exceção a isso, então as opções são:

  • use a fragileopção ou
  • dobre o #dobro, ou seja, quadruplique-o.

Isto leva a

\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}

Isso produz dois quadros idênticos:

insira a descrição da imagem aqui

Em particular, não há conflito genuíno entre foreste beamer, apenas as sutilezas usuais de definição e uso de macros com argumentos em frames.

informação relacionada