tikz-qtree
我使用了Ignasi 建议的在图表上添加叠加动画的代码(tex.SE 回答这里)。通过此代码,我可以创建以下动画:
\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikz-qtree}
\tikzset{% add overlay animations to qtrees
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
},
}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree
[.\node [visible on=<1->] {Root};
\edge [visible on=<2->];\node [visible on=<2->] {Leaf 1};
\edge [visible on=<3>];\node [visible on=<3>] {Leaf 2};
]
\end{tikzpicture}
\end{frame}
\end{document}
但是,我不知道如何修改代码以允许命令使用两个参数来visible on
产生如下内容:
[visible on=<1,5-6>]
当我向命令添加第二个(可选)参数时,出现错误“扫描 \pgfkeys@code 的使用时文件结束。”我该如何修改代码以允许使用可选的第二个参数?
答案1
,
赋予键的值中的A需要受到保护,以免被解析器发现。
在这种特殊情况下,最好的办法是
[visible on=<{1,5-6}>]
通常
[visible on={<1,5-6>}]
也很好,但visible on
风格也犯了同样的错误,应该是
visible on/.style={alt={#1{}{invisible}}}
但即使overlay-beamer-styles
图书馆犯了同样的错误。
不过,我会使用一种@alt
需要两个或三个括号参数的样式和alt
一个需要一个<…>
然后是一或两个组的键。
代码
\documentclass{beamer}
\usepackage{tikz-qtree}
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style args={<#1>}{@alt={#1}{}{invisible}},
alt/.style args={<#1>#2#3}{@alt={#1}{#2}{#3}},
@alt/.code n args={3}{\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}}}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree
[.\node [visible on=<1->] {Root};
\edge [visible on=<2->];
\node [visible on=<2->] {Leaf 1};
\edge [visible on=<3>];
\node [visible on={<1,5-6>}, alt=<{1,6}>{green}] {Leaf 2};
]
\end{tikzpicture}
\end{frame}
\end{document}