我尝试将一些图形(例如字母 A)从框架的一个点(例如中心)到另一个点(例如西北角)制作成动画。
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}
\begin{document}
\begin{frame}{Animation}
\begin{animateinline}[autoplay]{20}
\multiframe{30}{i=0+1}{\begin{tikzpicture}[remember picture, overlay]
\node at ($(current page.center)!{\i/31}!(current page.north west)$){A};
\end{tikzpicture}}
\end{animateinline}
\end{frame}
\end{document}
显然,前面的代码不起作用,因为“第一帧的内容不能为零宽度”。有什么办法吗?
答案1
animate
制作的动画在 PDF 小部件中运行,该小部件“浮动”在正常页面内容之上。动画帧决定了此小部件的大小,显然,该小部件在 x 和 y 上应为非零。但是,“ overlay, remember picture
”选项使tikzpicture
动画帧的大小为零。因此出现错误。
为了解决这个问题,tikzpicture
可以将其做成与幻灯片一样大,并放入幻灯片背景中。(但是,它仍然会浮在 PDF 查看器的顶部。)
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{animate}
\begin{document}
\AtBeginShipoutNext{%
\AtBeginShipoutUpperLeft{%
\unitlength=\paperheight%
\put(0,-1){%
\begin{animateinline}[autoplay]{30}
\multiframe{31}{i=0+1}{
\begin{tikzpicture}[x=\paperwidth,y=\paperheight]
\useasboundingbox (0,0) rectangle (1,1);
\node at ($(0.5,0.5)!{\i/30}!(0,1)$){A};
\end{tikzpicture}
}
\end{animateinline}%
}%
}%
}%
\begin{frame}{Animation}
% add "normal" content here.
\end{frame}
\end{document}