Beamer 中带有标签节点的 Tikz 动画图形

Beamer 中带有标签节点的 Tikz 动画图形

我希望获得与问题相同的结果: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}

相关内容