我尝试tikz-qtree
使用\only
beamer 中的 添加和删除节点。结果却很奇怪。
如果我不使用,\only
我就会看到我想要的图形。
\documentclass{beamer}
\usepackage{tikz-qtree}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree [.root
[.subtree1 ] [.subtree2 ]
]
\end{tikzpicture}
\end{frame}
\end{document}
但如果我添加,\only
文本就会变得混乱。
\documentclass{beamer}
\usepackage{tikz-qtree}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree [.root
\only<2>{ [.subtree1 ] [.subtree2 ] }
]
\end{tikzpicture}
\end{frame}
\end{document}
预期输出
相当于以下代码的输出。遗憾的是,由于声誉不足,我无法包含超过两张图片。
\documentclass{beamer}
\usepackage{tikz-qtree}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree [.root ]
\end{tikzpicture}
\end{frame}
\begin{frame}
\begin{tikzpicture}
\Tree [.root
[.subtree1 ] [.subtree2 ]
]
\end{tikzpicture}
\end{frame}
\end{document}
答案1
我认为,如果您有很多事情要做,那么森林会更容易,但tikz-qtree
也可以工作。
以下是两者的代码,假设边应与节点一起出现。所用样式的作者在评论中注明,并附有更多详细信息的链接。
\documentclass{beamer}
\usepackage{tikz-qtree}
\usepackage[linguistics]{forest}
\makeatletter
\tikzset{% set up for transitions using tikz with beamer overlays - developed by Daniel (http://tex.stackexchange.com/a/55849/) and, in earlier form, by Matthew Leingang (http://tex.stackexchange.com/a/6155/) and modified for this use, I think by Qrrbrbirlbel (http://tex.stackexchange.com/a/112471/)
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={% developed by Qrrbrbirlbel (http://tex.stackexchange.com/a/112471/)
for tree={%
/tikz/visible on={#1},
edge={/tikz/visible on={#1}}}},
}
\makeatother
\begin{document}
\begin{frame}
\begin{tikzpicture}\tikzset{edge from parent/.append style={visible on=<2->}}
\Tree [.root
[.\node [visible on=<2->]{subtree1}; ] [.\node [visible on=<2->]{subtree2}; ]
]
\end{tikzpicture}
\begin{forest}
where level=1{for tree={visible on=<2->}}{}
[root
[subtree1]
[subtree2]
]
\end{forest}
\end{frame}
\end{document}