我想逐个节点显示 tikz 树。首先是 A,然后是 A 和 B,最后是所有节点。请注意,我需要使用所呈现的格式来执行此操作:
\Tree
[. \node{A};]
因为树是自动以这种格式生成的,我只想修改它们而不是破坏它们。我尝试将子树放在 \visible<>{} 中,但没有成功。如果我对节点使用 [opacity=0],则弧仍然可见。如何使子树不可见?这确实可以解决我的问题。
\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikz-qtree-compat}
\begin{document}
\begin{frame}
\only<4>{}
%\setbeamercovered{invisible}
\begin{tikzpicture}[grow=down]
\tikzset{level distance = 25pt, sibling distance = 10pt}
\tikzset{every tree node/.style={align=center,anchor=north}}
\Tree
[. \node{A};
[. \node{B};
[. \node{C};]
]
]
\end{tikzpicture}
\end{frame}
\end{document}
答案1
一个选项是使用visible on
样式和\edge
操作来控制边缘,从而允许逐步显示它们:
代码:
\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikz-qtree-compat}
\tikzset{
invisible/.style={opacity=0},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
},
visible on/.style={alt=#1{}{invisible}},
}
\begin{document}
\begin{frame}
\begin{tikzpicture}[grow=down]
\tikzset{level distance = 25pt, sibling distance = 10pt}
\tikzset{every tree node/.style={align=center,anchor=north}}
\Tree
[. \node[visible on=<1->]{A};\edge[visible on=<2->];
[. \node[visible on=<2->]{B};\edge[visible on=<3->];
[. \node[visible on=<3>]{C};]
]
]
\end{tikzpicture}
\end{frame}
\end{document}