有没有办法在 Beamer 中引入tikzpicture
带有\pause
或类似的部分,而不需要通过tikzpicture
多帧逐步重新绘制?
将 TikZ 绘制命令与\pause
命令插入会创建新的帧,但会引入(或者在我的情况下,使用\setbeamercovered{highly dynamic}
,淡入)整个tikzpicture
,这有点道理,因为 的内部tikzpicture
不是\pause
命令的正常环境。
答案1
我发现最简单的方法是为图片元素提供叠加规范。基本命令、、\path
等等\draw
都是\node
叠加感知的。需要注意的一件事是,随着绘图的不同部分被放入或取出,边界框可能会跳动一点。但是,一旦你意识到这一点,那么修复它就很容易了。要么在开始时指定边界框(使用\useasboundingbox
),要么在绘图中乱放大量\coordinate
始终存在但仅在特定幻灯片上使用的 s。
这是一个使用该技术的相当详细的例子\useasboundingbox
。
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\useasboundingbox (-5.2,-3.1) rectangle (5.2,3.1);
\fill[gray!25] (-5.2,-3.1) rectangle (-0.2,3.1);
\draw[ultra thick,red] (-5,0) -- (-0.4,0);
\draw[ultra thick] (-2.7,-3) -- (-2.7,3);
\foreach \t in {-1.5,-1.4,...,1.5} {
\pgfmathsetmacro{\l}{abs(\t/1.5)}
\pgfmathsetmacro{\m}{1 - \l}
\definecolor{currentcolor}{rgb}{\l,0,\m}
\draw[color=currentcolor] (-5,\t) -- (-0.4,\t);
};
\foreach \t in {1.6,1.7,...,3} {
\pgfmathsetmacro{\l}{2-abs(\t/1.5)}
\pgfmathsetmacro{\m}{1 - \l}
\definecolor{currentcolor}{rgb}{\l,0,\m}
\draw<.(4)->[color=currentcolor] (-5,\t) -- (-0.4,\t);
\draw<.(4)->[color=currentcolor] (-5,-\t) -- (-0.4,-\t);
};
\fill<.(2)->[gray!25] (5.2,-3.1) rectangle (0.2,3.1);
\draw<.(2)->[ultra thick,red] (5,0) -- (0.4,0);
\draw<.(2)->[ultra thick] (2.7,-3) -- (2.7,3);
\foreach \t in {-2,-1.9,...,2} {
\pgfmathsetmacro{\l}{abs(\t/2)}
\pgfmathsetmacro{\m}{1 - \l}
\pgfmathsetmacro{\x}{2.3*cos(90*\t)};
\pgfmathsetmacro{\y}{2.3*sin(90*\t)};
\definecolor{currentcolor}{rgb}{\l,0,\m}
\draw<.(3)->[color=currentcolor] (2.7,0) -- +(\x,\y);
};
\end{tikzpicture}
\visible<2->{\(z \mapsto e^{z}\)}
\end{center}
\end{frame}
\end{document}
第一帧:
最后一帧:
(如果您需要帮助解决特定情况,请编辑问题以包含代码或提出有关该问题的新问题。)