问题

问题

我有一堆多页 PDF 文件需要以各种格式制作动画,例如 GIF、动画 PDF、MP4 和动画 SVG。为此,我为每种类型的动画编写了一个批处理文件,以便为这些多页 PDF 文件制作动画。

只是为了简单起见,特意将生成多页 PDF 的代码放入动画专用批处理中。在我的实际场景中,每个批处理只有从多页 PDF 生成特定类型动画的代码。

生成多页 PDF 的测试输入文件如下:

% test.tex
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\multido{\i=40+40}{9}
{
    \begin{pspicture}[showgrid=false](-2,-2)(2,2)
    \psline(2;\i)      
    \end{pspicture}
}
\end{document}

每个动画批次都需要一个包装器,我实际上将其放在本地 TeX 目录中。包装器非常简单,如下所示。

% wrapper.tex
\documentclass[border=\Border]{standalone}
\usepackage[dvisvgm]{animate}
\usepackage[dvisvgm]{graphicx}
\begin{document}
\animategraphics[\Options]{\FrameRate}{\FileName}{}{}%
\end{document}

动画批次如下。

rem animator.bat
echo off

rem %1 input filename without extension
rem %2 frame rate
rem %3 animate options such as palindrome, controls, autoplay, scale=1, loop, etc
rem %4 standalone border

rem pre-cleaning
for %%x in (aux log dvi ps pdf svg) do (if exist "%~1.%%x" del "%~1.%%x")

latex "%~1.tex"
dvips "%~1.dvi"
ps2pdf "%~1.ps"

latex  --jobname="%~1" "\def\FileName{%~1}\def\FrameRate{%2}\def\Options{%~3}\def\Border{%4}\input{wrapper}"

dvisvgm --bbox=papersize --font-format=woff --zoom=-1 "%~1" 

rem post-cleaning
for %%x in (aux log dvi ps) do (if exist "%~1.%%x" del "%~1.%%x")

问题

为简单起见,我将所有这些文件放在一个目录中。我从命令提示符调用批处理,如下所示

animator.bat test 10 "controls,scale=1,loop,autoplay,palindrome" 12pt

但我收到了以下错误。

LaTeX 警告:第 1 页上的引用“anim@abspage0”在输入行 5 上未定义。

!包 xkeyval 错误:controls,scale=1,loop,autoplay,palindrome' undefined in familiesanim@user'。

请参阅 xkeyval 包文档以了解解释。输入 H 可立即获得帮助。...

l.5 ...aphics[\Options]{\FrameRate}{\FileName}{}{} % ?

如何修复这个错误?

答案1

尝试\expandafter\animategraphics\expandafter[\Options]{\FrameRate}{\FileName}{}{}%

相关内容