我正在使用 beamer 和 TikZ,并想更改同一帧的第二张幻灯片中边缘的颜色和厚度。以下是我尝试的方法:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes,shapes.geometric,arrows,fit,calc,positioning,automata}
\begin{document}
\frame{
\newcommand*\properties{}
\only<2>{\renewcommand*{\properties}{orange, ultra thick}}
\begin{figure}
\begin{tikzpicture}[node distance = 1.5cm, scale=0.8]
\node (1) {1};
\node[right = of 1] (2) {2};
\path[->]
(1) edge[\properties] (2);
\end{tikzpicture}
\end{figure}
}
\end{document}
奇怪的是,当我在 的定义中只放入orange
或 时,一切都按预期工作。此外,如果我只在 后面的括号中放入,它仍然可以正常工作(当然,在这种情况下,边缘在两张幻灯片上的外观相同)。但是当我将它们都放在那里时,就会出现错误:ultra thick
\properties
orange, ultra thick
edge
软件包 pgfkeys 错误:我不知道密钥“/tikz/orange, ultra thick”,我将忽略它。也许你拼错了。
我可以知道为什么会这样吗?我应该如何纠正它才能达到所需的效果(即第二张幻灯片上的边缘变为橙色且更厚)?谢谢!
答案1
我认为您不能\only...
像这样将命令放在边缘命令中。相反,您必须应用于\only...
完整命令。
以下工作:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes,shapes.geometric,arrows,fit,calc,positioning,automata}
\tikzset{properties/.style={orange, ultra thick}}
\begin{document}
\frame{
\begin{figure}
\begin{tikzpicture}[node distance = 1.5cm, scale=0.8]
\node (1) {1};
\node[right = of 1] (2) {2};
\only<2>{\path[->](1) edge[properties] (2);}
\only<1,3->{\path[->](1) edge (2);}
\end{tikzpicture}
\end{figure}
}
\end{document}
我习惯\tikzset
以“tikz 方式”定义您的属性。如果您仅在一个环境中使用它,tikzpicture
您也可以通过以下方式“本地”定义它
\begin{tikzpicture}[node distance = 1.5cm, scale=0.8,
properties/.style={orange, ultra thick}]
...
\end{tikzpicture}
編輯我
正如指出的那样如何在使用 Beamer 的叠加层时修改 TikZ 中的节点,另一种方法是使用以下方式\only...
设置属性:
\only<1,3->{\tikzset{properties/.style={}}}
\only<2>{\tikzset{properties/.style={orange, ultra thick}}}
现在您的tikzpicture
环境不再需要任何\only...
语句,对于节点您只需写入:
\path[->](1) edge[properties] (2);
編輯 II
注意,里面的任何东西\only
都是框架的局部。例如,你可以制作
\tikzset{properties/.style={orange, ultra thick}}
在你的序言中有一个“全局”定义,然后使用
\only<1,3->{\tikzset{properties/.style={}}}
每当您想要“关闭”此定义时。还请注意,\tikzset
框架内的任何内容仅适用于该框架,并且无法在其他框架中访问,因此这需要进入前导码,或者更准确地说,进入框架之外。