
비머에 나무를 선물하고 싶지만 forest
, 부품을 하나씩 하나씩, 시작합니다.밑바닥부터, 그리고 정상으로 올라갑니다.
그럼 다음과 같은 간단한 트리를 생각해 봅시다:
\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}
나는 나무의 바닥을 먼저 제시하고 싶습니다. 따라서 기본적으로 아래에 "mange"가 있는 "T"가 있습니다. 그런 다음 위의 분기(오른쪽에 자식이 있는 VP), 위의 수준 등을 거쳐 트리 상단까지 계속됩니다(명확했으면 좋겠습니다).
기반이 토론, 반대 방향(위에서 아래로)으로 수행하는 방법을 알고 있습니다. 하지만 제가 설명한 대로 이를 달성하려면 어떻게 해야 합니까?
답변1
당신이 사용할 수있는visible on
Qrrbrbirlbel이 정의한 스타일하지만 그것을 사용하는 대신에 for tree
그렇게 하십시오 for ancestors'
. for ancestors'
스타일은 실제 노드와 상위 노드에 적용됩니다. 따라서 visible on=<1->
이 노드와 상위 노드 및 그 사이의 가장자리는 슬라이드 1에서 볼 수 있지만 visible on=<2->
상위 노드에 적용하면 슬라이드 2까지 표시되지 않음을 의미합니다.
노드와 부모 사이의 가장자리도 표시되지만 스타일 정의에서 슬라이드 값을 변경하는 방법을 모르겠습니다. 조상이 표시될 때만 가장자리를 표시하기 위해 제공할 수 있는 솔루션은 다음을 사용하여 가장자리 가시성을 수동으로 수정하는 것입니다.
[{[ajout]}\\\textit{dans la cuisine}, align=center, visible on=<2->,edge={/tikz/visible on=<3->}]
전체 코드는 다음과 같습니다.
\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}
메모: 이므로 forest v2.0
키를 for ancestors'
로 변경해야 합니다 for current and ancestors
.
답변2
다음은이그나시의 답변이는 show up tree
나무를 점진적으로 위쪽으로 드러내는 스타일을 제공합니다. 이 스타일은 또한 Ignasi가 두 개의 서로 다른 오버레이 사양을 전달하여 처리할 것을 제안한 하위 요소가 아닌 단일 오버레이 사양을 전달할 때 상위 요소와 함께 가장자리가 표시되도록 하는 방법을 보여줍니다.
\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}