我不确定在当前的 PDF 格式规范下这是否可行,但我想通过让幻灯片的一部分移动或“飞”到新位置来为幻灯片之间或幻灯片叠加之间的过渡添加动画效果。例如,
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\only<1-2>{some text before}
\begin{tikzpicture}
\draw<1> (0,0) node [fill=blue!20] (a) {hello} -- (1, 1) node [fill=red!20] (b) {world};
\draw<2-> (0,0) node [fill=blue!20] (a) {hello} -- (0, 1) node [fill=red!20] (b) {world};
\draw<1-> (2,2) node [fill=violet!20] (c) {this stays put};
\end{tikzpicture}
\only<3->{some text after}
\end{frame}
\end{document}
理想情况下,应该有某种方式在叠加层 1 和 2 之间进行动画处理,以便观众获得一种连续感(对于熟悉 iOS 开发人员库的人,或者曾经研究过 iOS 用户界面设计的人,这个概念应该很熟悉)。更好的是,当文本“之前的一些文本”消失时(叠加层 3 及以后),整个 tikz 图形将向左滑动到新的位置。
使用当前的 PDF 标准(或 TeX/LaTeX/*TeX 可以输出的任何其他标准)是否可能实现这一点?是否有任何地方的包可以实现此行为?对于一个简单的 TeX/LaTeX/*TeX 文件来说,这听起来相当极端,但我已经学会了不要在tikz
/pgf
和之后添加任何内容beamer
。
答案1
动画通常不是一个好主意,因为它会分散观众对演示的注意力(参见 Beamer 手册)。
我读到过,至少使用 Acrobat 阅读器可以在帧之间实现动画(例如:溶解、移动到),但我没有尝试过,而且它们仅限于整个幻灯片。
可以使用该animate
包预先计算流畅的动画,如下所示很好的例子。我认为您也可以用类似的方式在两点之间平滑移动文本的一部分。
编辑动画示例:交流电的产生
\documentclass{beamer}
\usepackage{animate}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\newcounter{angle}
\setcounter{angle}{0}
\begin{document}
\begin{frame}[fragile]{Production of AC current}{Alternator}
\begin{center}
\begin{animateinline}[loop,poster=first,controls]{10}
\whiledo{\theangle<720}{
\begin{tikzpicture}[scale=.7]
\path[use as bounding box] (-3.5,-4) -- (10,4);
%\draw (-3.5,-4) rectangle (10,4);
% 1/2 surface inf
\draw[black!50,thick] (2,-1)
arc[start angle=-90,end angle=90,x radius=.2cm, y radius=1cm];
\begin{scope}[rotate=\theangle]
% lignes de champ
\foreach \h/\X/\Y in {.85/1.6/.8, 1.1/2/1.1, 1.325/2.4/1.35,%
1.525/2.8/1.6} {
\draw [decoration={markings,
mark=between positions 0 and 1 step 1.5cm
with {\arrow{stealth}}},
postaction={decorate},color=brown!60] (0,\h)
circle[x radius=\X cm,y radius=\Y cm];
\draw [decoration={markings,
mark=between positions 0 and 1 step 1.5cm
with {\arrowreversed{stealth}}},
postaction={decorate},color=brown!60] (0,-\h)
circle[x radius=\X cm,y radius=\Y cm];
}
\end{scope}
% 1/2 surface sup
\draw[thick] (2,-1)
arc[start angle=-90,end angle=-270,x radius=.2cm,%
y radius=1cm];
% aimant
\begin{scope}[rotate=\theangle]
\fill[color=cyan!70] (-1,-.25) rectangle (0,.25);
\fill[color=red!70] (0,-.25) rectangle (1,.25);
\draw (-1,-.25) rectangle (1,.25);
\end{scope}
% calculation of the position
\pgfmathrad{\theangle}
\edef\myangle{\pgfmathresult}
\pgfmathparse{4 + .4 * \myangle}
\edef\myX{\pgfmathresult}
\pgfmathparse{2 * cos(\theangle)}
\edef\myY{\pgfmathresult}
\coordinate (O) at (4,0);
\begin{scope}
% axes
\draw[->] (O) -- ++(5.5,0) node[below]{$t$};
\draw[->] ([yshift=-2.5cm]O) -- ([yshift=2.5cm]O) node[left]{$I$};
\begin{scope}[xshift=4cm,xscale=0.4] % sinusoïde
% calcul clip
%\node at (1,1) { \myangle };
\clip (0,-2.5) rectangle (\myangle,2.5);
\draw[green,thick] (0,2) cos (1.5708,0) sin (3.1416,-2)
cos (4.7124,0) sin (6.2832,2) cos (7.8540,0)
sin (9.4248,-2) cos (10.9956,0) sin (12.5664,2);
\end{scope}
\draw[fill=green!30,draw=green] (\myX,\myY) circle[radius=.5mm];
\end{scope}
\end{tikzpicture}
%
%\addtocounter{angle}{720}
\addtocounter{angle}{5}
%\stepcounter{angle}
\ifthenelse{\theangle<720}{%
\newframe
}{%
\end{animateinline}
}
}
\end{center}
\end{frame}
\end{document}
答案2
在演示中移动物体而不添加信息通常会被认为会分散注意力。
这是可能的,但有限制。可能是因为它从来没有被认为值得付出努力,可能是因为底层 PDF 格式不是为它制作的。
这动画软件包可让您在单张幻灯片上创建动画。但是,它将使用一定数量的离散步骤进行过渡。虽然这在您的笔记本电脑上看起来不错,但您的图像仍会在墙上的大型投影仪图像上跳跃/抖动。动画的示例可以在Texample - 动画。
但是,由于转换使用了 Javascript,因此仅限于 Acrobat Reader。
使用 可以实现略高的兼容性\transduration<overlay specification>{time}
。然后,您可以创建大量帧并让阅读器浏览它们,方法是指定时间为 0 秒。即使这在其他系统上不能自动运行,您仍然可以显示动画,然后过度使用点击器。
最佳用法是仅指定前帧和后帧,并让查看者创建有限数量的可用全页过渡。
通过使用
\begin{frame}
\transwipe
\only<1>{First}
\only<2>{Second}
\end{frame}
PDF 格式支持的转换的完整列表如下在此答案中列出。
这些过渡即使不受支持也不会导致问题,而且是最流畅的,因为它们是由 Acrobat Reader 创建的。使用这些过渡,文件大小的增加也是最低的。
选项二和选项三可以组合使用。transduration 命令可能会在实际演示过程中导致问题,因为它使得很难返回上一张幻灯片。为了安全起见,我使用白色超链接。