
Gostaria de apresentar uma árvore em forest
projetor, mas parte após parte, começandode baixoe depois suba até o topo.
Então, vamos considerar uma árvore simples como a seguinte:
\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}
Eu gostaria de apresentar primeiro a parte inferior da árvore (basicamente o "T" com a "sarna" abaixo). Depois o galho acima (o VP com a criança à direita), depois o nível acima, e assim por diante até o topo da árvore (espero ter esclarecido).
Baseado emesta discussão, eu sei fazer o contrário (de cima para baixo). Mas como posso fazer para alcançá-lo como descrevi?
Responder1
Você pode usarvisible on
estilo definido por Qrrbrbirlbelmas, em vez de usar for tree
, faça for ancestors'
. for ancestors'
O estilo é aplicado ao nó real e aos pais, portanto, visible on=<1->
significa que este nó e os pais e as bordas entre eles serão visíveis no slide 1, mas aplicando-se visible on=<2->
aos nós pais, eles não serão visíveis até o slide 2.
As bordas entre os nós e os pais também são visíveis, mas não sei como alterar o valor do slide na definição do estilo. A solução que posso fornecer para mostrar arestas somente quando os ancestrais são mostrados é corrigir manualmente a visibilidade das arestas com
[{[ajout]}\\\textit{dans la cuisine}, align=center, visible on=<2->,edge={/tikz/visible on=<3->}]
Aqui está o código completo
\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}
Observação: desde forest v2.0
, a chave for ancestors'
deve ser alterada para for current and ancestors
.
Responder2
Aqui está uma variação deA resposta de Ignasique fornece um show up tree
estilo para revelar árvores gradativamente para cima. Este estilo também ilustra uma maneira de fazer com que as bordas apareçam com seus pais ao passar uma única especificação de sobreposição, em vez de com seus filhos, o que Ignasi sugeriu tratar passando duas especificações de sobreposição diferentes.
\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}