我希望获得与问题相同的结果:Beamer 中的 Tikz 动画人物
我的情况不同之处在于,我在节点中使用标签。对于节点,@kmundnic 的评论中已经有一个解决方案:Beamer 中的 Tikz 动画人物
但在我的特殊情况下,标签中有换行符,这会导致错误:
! LaTeX Error: Something's wrong--perhaps a missing \item.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.16 \end{frame}
?
我重现该错误的 MWE 是:
\documentclass[tikz]{beamer}
\usepackage{tikz}
\tikzset{
invisible/.style={opacity=0,prefix after command={\pgfextra{\tikzset{every label/.style={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}[every label/.style={align=center}]
\path (1,1) node[draw, shape=circle, text width=2.2cm, visible on=<2->, label=center:{Label\\new Line}] (LODL2) {};
\end{tikzpicture}
\end{frame}
\end{document}
如果你省略它,\\
它就会编译。
编辑:* 添加every label/.style={align=center}
到 tikzpicture,这是编译不带动画部分的 MWE 所必需的。
编辑2:* 将标签放入节点,目前还没有解决方案,因为文本的数量使节点变得更大:
\path (1,1) node[draw, shape=circle, text width=2.2cm, align=center, label=center:{Label\\new Line}] (LODL1) {};
\path (4,1) node[draw, shape=circle, text width=2.2cm, visible on=<2->, align=center, label=center:{}] (LODL2) {Label\\new Line};
\path (1,1) node[draw, shape=circle, text width=2.2cm, visible on=<3->, align=center, label=center:{}] (LODL2) {Label\\new Line};
在此图中,首先按照我的要求在 处绘制节点,然后(1,1)
在 处绘制两个节点,节点中带有标签。可以看到,第二个和第三个节点比第一个节点大。文本越多,圆圈越大。(4,1)
(1,1)
答案1
使用两个节点和\onslide
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{tikzpicture}[every label/.style={align=center}]
\path (1,1) node[draw, shape=circle, text width=2.2cm] (LODL2) {};
\onslide<2>{
\path (1,1) node[ shape=circle, text width=2.2cm, label=center:{Label\\new Line}] {};
}
\end{tikzpicture}
\end{frame}
\end{document}
答案2
如果将文本放入其node
本身而不需要命令,则此方法有效prefix after command
。
\documentclass[tikz]{beamer}
\usepackage{tikz}
\tikzset{
invisible/.style={opacity=0,%prefix after command={\pgfextra{\tikzset{every label/.style={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}[]
\path (1,1) node[draw, shape=circle, text width=2.2cm, visible on=<2->,align=center] (LODL2) {Label\\ new Line};
\end{tikzpicture}
\end{frame}
\end{document}