1

Is it possible to animate a tree over multiple slides without writing the explicit code for each slide?

This is what I want to achive, but with less code (basically I'm searching for the string "Ronny")

\documentclass{beamer}
\usepackage{forest}
\begin{document}
    \frame{
        \begin{forest}
            for tree={
                circle,
                black,
                draw,
                minimum size = 2em,
                font=\Large,
                edge={->},
                s sep = 30pt
            }
            [{}, color=green
            [{}, edge label={node[midway, left]{J}}
            [{}, edge label={node[midway, left]{a}}
            [{}, double, edge label={node[midway, left]{ck}}]
            [{}, double, edge label={node[midway, right]{va}}]]
            [{}, double, edge label={node[midway, left]{im}}
            [{}, double, edge label={node[midway, left]{my}}]]]
            [{}, double, edge label={node[midway, right]{Ron}}
            [{}, double, edge label={node[midway, right]{ny}}]]]
     \end{forest}
 }
 \frame{
    \begin{forest}
        for tree={
            circle,
            black,
            draw,
            minimum size = 2em,
            font=\Large,
            edge={->},
            s sep = 30pt
        }
        [{}
        [{}, edge label={node[midway, left]{J}}
        [{}, edge label={node[midway, left]{a}}
        [{}, double, edge label={node[midway, left]{ck}}]
        [{}, double, edge label={node[midway, right]{va}}]]
        [{}, double, edge label={node[midway, left]{im}}
        [{}, double, edge label={node[midway, left]{my}}]]]
        [{}, color=green, double, edge label={node[midway, right]{Ron}}
        [{}, double, edge label={node[midway, right]{ny}}]]]
    \end{forest}
}
\frame{
    \begin{forest}
        for tree={
            circle,
            black,
            draw,
            minimum size = 2em,
            font=\Large,
            edge={->},
            s sep = 30pt
        }
        [{}
        [{}, edge label={node[midway, left]{J}}
        [{}, edge label={node[midway, left]{a}}
        [{}, double, edge label={node[midway, left]{ck}}]
        [{}, double, edge label={node[midway, right]{va}}]]
        [{}, double, edge label={node[midway, left]{im}}
        [{}, double, edge label={node[midway, left]{my}}]]]
        [{}, double, edge label={node[midway, right]{Ron}}
        [{}, color=green, double, edge label={node[midway, right]{ny}}]]]
    \end{forest}
}
\end{document}

1 Answer 1

1

Based on How to make beamer overlays with Tikz node

\documentclass{beamer}
\usepackage{forest}


\tikzset{onslide/.code args={<#1>#2}{%
  \only<#1>{\pgfkeysalso{#2}} % \pgfkeysalso doesn't change the path
}}


\begin{document}
    \begin{frame}
       \begin{forest}
            for tree={
                circle,
                black,
                draw,
                minimum size = 2em,
                font=\Large,
                edge={->},
                s sep = 30pt
            }
            [{}, onslide=<1>{color=green}
            [{}, edge label={node[midway, left]{J}}
            [{}, edge label={node[midway, left]{a}}
            [{}, double, edge label={node[midway, left]{ck}}]
            [{}, double, edge label={node[midway, right]{va}}]]
            [{}, double, edge label={node[midway, left]{im}}
            [{}, double, edge label={node[midway, left]{my}}]]]
            [{}, onslide=<2>{color=green}, double, edge label={node[midway, right]{Ron}}
            [{}, onslide=<3>{color=green}, double, edge label={node[midway, right]{ny}}]]]
     \end{forest}
\end{frame}

\end{document}
5

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .