
Ich möchte einen Baum mit forest
in Beamer präsentieren, aber Teile nach Teile, beginnendvom Bodenund dann Aufstieg zum Gipfel.
Betrachten wir also einen einfachen Baum wie den folgenden:
\documentclass{beamer}
\usepackage{forest}
\begin{document}
\begin{frame}
\begin{forest}
[VP, calign=last
[{[ajout]}\\\textit{rapidement},
align=center,
base=top]
[VP, calign=first
[VP, calign=first
[V\\\textit{mange}, align=center,base=top]
[{[compl]}\\\textit{une orange}, align=center,base=top]
]
[{[ajout]}\\\textit{dans la cuisine}, align=center,base=top]
]
]
\end{forest}
\end{frame}
\end{document}
Ich möchte zuerst die Unterseite des Baumes darstellen (also im Wesentlichen das „T“ mit der „Räude“ darunter). Dann den Zweig darüber (den VP mit dem Kind rechts), dann die Ebene darüber und so weiter bis zur Spitze des Baumes (ich hoffe, ich habe mich klar ausgedrückt).
Bezogen aufdiese Diskussion, ich weiß, wie es andersherum geht (von oben nach unten). Aber wie kann ich es so erreichen, wie ich es beschrieben habe?
Antwort1
Sie könnenvisible on
Stil definiert durch Qrrbrbirlbelaber anstatt es zu verwenden for tree
, tun Sie es for ancestors'
. for ancestors'
Der Stil wird auf den tatsächlichen Knoten und die übergeordneten Knoten angewendet, visible on=<1->
bedeutet also, dass dieser Knoten und die übergeordneten Knoten und die Kanten zwischen ihnen ab Folie 1 sichtbar sind, aber bei Anwendung visible on=<2->
auf übergeordnete Knoten sind sie erst ab Folie 2 sichtbar.
Kanten zwischen Knoten und übergeordneten Knoten sind ebenfalls sichtbar, aber ich weiß nicht, wie ich den Folienwert in der Stildefinition ändern kann. Die Lösung, die ich anbieten kann, um Kanten nur anzuzeigen, wenn übergeordnete Knoten angezeigt werden, besteht darin, die Sichtbarkeit der Kanten manuell zu korrigieren mit
[{[ajout]}\\\textit{dans la cuisine}, align=center, visible on=<2->,edge={/tikz/visible on=<3->}]
Hier ist der komplette Code
\documentclass{beamer}
\usepackage{forest}
\setbeamertemplate{navigation symbols}{} %Remove navigation bar
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
}
\forestset{
visible on/.style={
for ancestors'={
/tikz/visible on={#1},
edge={/tikz/visible on={#1}}}}}
\begin{document}
\begin{frame}[plain]{Same with forest}
\begin{forest}
[VP, calign=last, visible on=<4->
[{[ajout]}\\\textit{rapidement},
align=center,
base=top, visible on=<3->, ]
[VP, calign=first, visible on=<3->,
[VP, calign=first, visible on=<2->,
[V\\\textit{mange}, align=center,base=top, visible on=<1->, ]
[{[compl]}\\\textit{une orange}, align=center,base=top, visible on=<1->, ]
]
[{[ajout]}\\\textit{dans la cuisine}, align=center, visible on=<2->,]
]
]
\end{forest}
\end{frame}
\end{document}
Notiz: da sollte forest v2.0
der Schlüssel for ancestors'
in geändert werden for current and ancestors
.
Antwort2
Hier ist eine Variante vonIgnasis AntwortDies bietet einen show up tree
Stil, um Bäume schrittweise nach oben anzuzeigen. Dieser Stil veranschaulicht auch eine Möglichkeit, die Kanten bei der Übergabe einer einzelnen Overlay-Spezifikation mit ihren Eltern und nicht mit ihren Kindern erscheinen zu lassen, was Ignasi durch die Übergabe von zwei verschiedenen Overlay-Spezifikationen zu handhaben vorschlug.
\documentclass{beamer}
\usepackage{forest}
\setbeamertemplate{navigation symbols}{} %Remove navigation bar
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
},
}
\forestset{
show up tree/.style={
before typesetting nodes={
tempcounta/.max={level}{tree},
tempcounta'+=1,
for tree={
/tikz/visible on/.process={ ROw2+nw {tempcounta}{level}{##1-##2}{<##1->} },
edge+/.process={ ROw2+nw {tempcounta}{level}{(##1-##2)+1} {/tikz/visible on={ {<##1->} } }},
}
}
}
}
\begin{document}
\begin{frame}[plain]{Same with forest}
\begin{forest}
show up tree
[VP, calign=last,
[{[ajout]}\\\textit{rapidement},
align=center,
base=top, ]
[VP, calign=first,
[VP, calign=first,
[V\\\textit{mange}, align=center,base=top, ]
[{[compl]}\\\textit{une orange}, align=center,base=top, ]
]
[{[ajout]}\\\textit{dans la cuisine}, align=center, ]
]
]
\end{forest}
\end{frame}
\end{document}