我制作了一个 Beamer 演示文稿,并有一系列带有 pstricks 图像的幻灯片。这些图像中的每一个要么建立在前一个图像的基础上,要么移动前一个图像的元素。有没有办法设置演示文稿,以便我只需单击一次即可运行整个幻灯片系列?
注意:我尝试使用 Beamer 手册中描述的 \animate 命令,但没有成功。
答案1
最佳实践方法(IMHO):
步骤1
将每个图表放入具有文档类的单独可编译输入文件中,standalone
如下所示。
% frames.tex
\documentclass[pstricks,border=12pt]{standalone}
\begin{document}
\foreach \r in {0.1,0.2,...,1.0}{%
\begin{pspicture}(4,4)
\pscircle(2,2){\r}
\end{pspicture}}
\end{document}
latex
因为该图表已经位于单个、单独的、独立的输入文件中,所以如果先使用 进行编译,dvips
然后再使用进行编译ps2pdf
以获得 PDF 输出,速度会更快。
注意:编译图表的其他替代方法是
- (
xelatex
但速度极慢),或者 - 已
pdflatex -shell-escape
加载auto-pst-pdf
包。
在这个例子中,我将使用第一种方法,即使用latex->dvips->ps2pdf
。在您的终端中执行以下操作。
latex frames.tex
dvips frames.dvi
ps2pdf -dAutoRotatePages=/None frames.ps
将每个图表分离成一个独立的输入文件的优点: - 我们可以将代码重复用于许多项目。 - 我们可以轻松找到错误。 - 我们可以减少在开发阶段编译代码所需的时间。考虑相反的情况,如果您将所有代码放在一个主输入文件中;如果您在开发阶段每次编辑一些代码以查看效果时都一次又一次地重新编译主输入文件,这将浪费您大量的时间。
第2步
按照第一步所述,从您的 beamr 文档中导入您已经准备好的框架,如下所示。使用 进行编译pdflatex
(首选,因为您可以有效使用microtype
)。
% main.tex
\documentclass{beamer}
\usepackage{animate}
\begin{document}
\begin{frame}{Animation}
\begin{center}
\animategraphics[autoplay,scale=1,loop,controls]{3}{frames}{}{}
\end{center}
\end{frame}
\end{document}
从您的终端调用以下命令。
pdflatex main.tex
这样你就得到了所需的动画。完成
模拟
下面将上述所有内容模拟为一个步骤。
% compile it with
% pdflatex -shell-escape main.tex
% the filename of this code is main.tex
\documentclass{beamer}
\usepackage{filecontents}
\begin{filecontents*}{frames.tex}
\documentclass[pstricks,border=12pt]{standalone}
\begin{document}
\foreach \r in {0.1,0.2,...,1.0}{%
\begin{pspicture}(4,4)
\pscircle(2,2){\r}
\end{pspicture}}
\end{document}
\end{filecontents*}
\usepackage{pgffor}
\foreach \compiler/\ext in {latex/tex,dvips/dvi,{ps2pdf -dAutoRotatePages=/None}/ps}{\immediate\write18{\compiler\space frames.\ext}}
\usepackage{animate}
\begin{document}
\begin{frame}{Animation}
\begin{center}
\animategraphics[autoplay,scale=1,loop,controls]{3}{frames}{}{}
\end{center}
\end{frame}
\end{document}
使用以下方法编译
pdflatex -shell-escape main.tex