使用 beamer 叠加在 TikZ 中设置不同的样式

使用 beamer 叠加在 TikZ 中设置不同的样式

可能重复:
如何使用 Tikz 节点制作投影仪覆盖

我想在 TikZ 中绘制一个图形用于beamer演示,并在同一帧的不同叠加层中为各个节点设置不同的颜色。我可以使用\only<>仅在某些叠加层中放置节点和路径\only<>,但我似乎无法使用它来更改样式。

是否可以更改不同覆盖层的样式?您能想到另一种给节点着色的方法吗?

一个例子:

\documentclass{beamer}
\usepackage{pgf}
\usepackage{tikz}
\begin{document}
\begin{frame}{Frame}
  \begin{tikzpicture}
    \path (0,0) node[draw,rectangle] { 1 } --
          (2,0) node[draw,rectangle] { 2 } --
          (4,0) node[draw,rectangle] { 3 };
  \end{tikzpicture}
\end{frame}
\end{document}

假设我想让第一个节点的填充颜色从第二个覆盖层开始变为灰色,第二个节点在下一个覆盖层上也变为灰色,依此类推。您建议如何做?

答案1

这有点烦人,因为尽管选项展开后,\only在其中放入一个会中断;大概它包含某种不可扩展的赋值。因此,最简单的解决方案似乎是定义包含(或不包含)您想要在节点上“发现”的颜色的宏,然后使用以下条件重新定义它们\only 外部选项。即:

\documentclass{beamer}
%%% Unnecessary; tikz loads it
% \usepackage{pgf} 
\usepackage{tikz}
\begin{document}
\begin{frame}{Frame}
 \newcommand*\nodeonecolor{}
 \newcommand*\nodetwocolor{}
 \newcommand*\nodethreecolor{}
 \only<2->{\renewcommand*\nodeonecolor{red}}
 \only<3->{\renewcommand*\nodetwocolor{green}}
 \only<4->{\renewcommand*\nodethreecolor{blue}}
  \begin{tikzpicture}
    \path (0,0) node[draw,rectangle,\nodeonecolor] { 1 } --
          (2,0) node[draw,rectangle,\nodetwocolor] { 2 } --
          (4,0) node[draw,rectangle,\nodethreecolor] { 3 };
  \end{tikzpicture}
\end{frame}
\end{document}

看,\nodeonecolor(和其他)一开始是空的,所以框是无色的(黑色)。然后,在幻灯片 2、3 和 4 上,这些宏被定义为其他颜色,因此即使代码本身相同,节点选项也不同。

相关内容