我想使用 animate 包在 Beamer 中创建动画。我按照“一体化方法”轻松创建了一个基本示例,来自旧帖但我无法使用 pdflatex 进行编译,这导致了我的问题。
我在名为 main.tex 的文件中使用此最小代码(从提到的帖子中复制):
\documentclass{beamer}
\usepackage{filecontents}
%====================== BEGIN FILE CONTENTS ==========================
\begin{filecontents*}{dummy.tex}
\documentclass{article}
\usepackage{pstricks-add}
\usepackage[active,tightpage]{preview}
\PreviewBorder=0pt
\PreviewEnvironment{pspicture}
\newcommand\RotatingArrow[1]{%
\begin{pspicture}(-1,-1)(10,11)
\psframe*[linecolor=cyan,opacity=0.3](-1,-1)(10,11)
\psset{arrows=->}
\psaxes(0,0)(-0.5,-0.5)(9,10)[$x$,0][$y$,90]
\rput(4.5,0.6){\Huge{Temps = #1 s}}
\rput{#1}(4.5,5.5){%
\psset{arrowsize=5pt}
\pnode(2,0){A}
\pnode(2,3){B}
\psline[linecolor=blue](A)
\uput[0]{-#1}(A){\Huge{$\textcolor{blue}{\vec{a}}$}}
\psline[linecolor=red](A)(B)
\uput[90]{-#1}(B){\Huge{$\textcolor{red}{\vec{v}}$}}}
\end{pspicture}}
\begin{document}
\multido{\i=0+10}{36}{\RotatingArrow{\i}}
\end{document}
\end{filecontents*}
%====================== END FILE CONTENTS =========================
\usepackage{graphicx}
\usepackage{animate}
\begin{document}
\immediate\write18{latex dummy}
\immediate\write18{dvips dummy}
\immediate\write18{ps2pdf dummy.ps}
\begin{frame}{Circular motion in action}
\animategraphics[controls,scale=0.5]{10}{dummy}{}{}
\end{frame}
\end{document}
当我使用以下命令在命令行中进行编译时,此方法有效:
pdflatex -shell-escape main.tex
但是,由于我通常在演示文稿中使用其他技巧,我需要使用路线 latex->dvips->ps2pdf,但是当我编译时执行以下操作:
latex main.tex
dvips main.dvi
ps2pdf main.ps
我收到错误: 包动画错误:\animategraphics 命令中缺少帧号。 此错误发生在以下步骤之后:latex main.tex
根据动画包文档,我认为它应该可以工作,但我显然做错了什么。虽然文档提到了这种编译方式的一些问题,但我无法解决它。有指针吗?
答案1
改用\animateinline
。它让生活更轻松:
\documentclass{beamer}
\usepackage{etex}
\usepackage{animate}
\usepackage{pstricks-add}
\newcommand\RotatingArrow[1]{%
\psset{unit=0.5}\footnotesize
\begin{pspicture}(-1,-1)(10,11)
\psframe*[linecolor=cyan,opacity=0.3](-1,-1)(10,11)
\psset{arrows=->}
\psaxes(0,0)(-0.5,-0.5)(9,10)[$x$,0][$y$,90]
\rput(4.5,0.6){Temps = #1 s}
\rput{#1}(4.5,5.5){%
\psset{arrowsize=5pt}
\pnode(2,0){A}
\pnode(2,3){B}
\psline[linecolor=blue](A)
\uput[0]{-#1}(A){$\textcolor{blue}{\vec{a}}$}
\psline[linecolor=red](A)(B)
\uput[90]{-#1}(B){$\textcolor{red}{\vec{v}}$}}
\end{pspicture}}
\begin{document}
\begin{frame}
\begin{animateinline}[poster=last, controls, palindrome]{12}%
\multiframe{36}{iAngle=0+10}{\RotatingArrow{\iAngle}}%
\end{animateinline}%
\end{frame}
\end{document}