目前使用森林在投影仪上显示 Tableaux 树。在某些情况下,我希望以深度优先的逐步动画来构建树。
这个想法是从可见的根开始,然后在每个步骤中节点开始出现。
因此我正在使用相关解决方案进行一些测试像这样(使用投影仪覆盖森林生成的树)由@Qrrbrbirlbel 提出,我认为非常干净:
\documentclass[xcolor={table, dvipsnames}]{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{
closed/.style={
label=below:$\mathlarger{\mathlarger{\mathlarger{\times}}}$
},
open/.style={
label=below:$\mathlarger{\mathlarger{\mathlarger{\odot}}}$
},
visible on/.style={
for tree={
/tikz/visible on={#1},
edge+={/tikz/visible on={#1}}}}}
\begin{document}
\begin{frame}
\begin{forest}
[A,for children={visible on=<2->}
[B,for children={visible on=<3->} % PROBLEM HERE, IT SHOULD BE ONLY FOR FIRST CHILD
[C, for children={visible on=<4->}
[D, open,for children={visible on=<5->}]
]
[E,for children={visible on=<6->}
[F, closed,for children={visible on=<7->}]
]
]
]
\end{forest}
\end{frame}
\end{document}
问题是,在第二步中,“visible on”属性被传递给子节点 C 和 E,并且它们同时出现,但 E 应该只出现在左分支上的叶子 D 之后。我正在阅读手册的第 3.3.6 节 Propagators forest
,我(天真的?)的想法是只传播到第一个子节点,但我看不出有任何方法可以做到这一点。
另一个问题是,我的树样式open
和closed
创建在树上的特殊叶子上放置标签应该与节点一起隐藏。
任何帮助定制的帮助都将不胜感激。
答案1
欢迎使用 TeX-SE!我添加了visible on=<5->,
节点E
并稍微更改了open
和closed
样式。
\documentclass[xcolor={table, dvipsnames}]{beamer}
\usepackage{forest}
\usepackage{relsize}
\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
},
%label visible on/.code={\tikzset{every label/.append style={visible on=#1}}}
}
\forestset{
closed/.style={
label={[#1]below:$\mathlarger{\mathlarger{\mathlarger{\times}}}$ }
},
open/.style={
label={[#1]below:$\mathlarger{\mathlarger{\mathlarger{\odot}}}$}
},
visible on/.style={
for tree={
/tikz/visible on={#1},
edge+={/tikz/visible on={#1}}}}}
\begin{document}
\begin{frame}
\begin{forest}
[A,for children={visible on=<2->}
[B,for children={visible on=<3->} % PROBLEM HERE, IT SHOULD BE ONLY FOR FIRST CHILD
[C, for children={visible on=<4->}
[D,open={visible on=<4->},for children={visible on=<5->}]
]
[E,visible on=<5->,for children={visible on=<6->}
[F,visible on=<6->, closed={visible on=<6->},for children={visible on=<7->}]
]
]
]
\end{forest}
\end{frame}
\end{document}