使用数据文件的 SVG 动画

使用数据文件的 SVG 动画

我正在尝试使用 animate 包创建一个简单的 SVG 动画:

\documentclass{standalone}
\usepackage{tikz}
    \usetikzlibrary{calc}
\usepackage{animate}
\usepackage{multido}
\usepackage{listofitems}
\newcommand\fileopenr[2]{%
    \newread#1%
    \immediate\openin#1=#2%
}
\newcommand\readtolist[3][,]{%
    \setsepchar{#1}%
    \immediate\read#2 to \inputline{%
        \ifeof#2
        \multiframebreak%
        \else%
        \greadlist#3\inputline%
        \fi%
    }%
}
\begin{document}
    \begin{animateinline}[poster=first,autoplay,loop]{25}
        \fileopenr{\dataP}{xP.dat}%
        \readtolist[ ]{\dataP}{\posP}%
        \multiframe{251}{}{%
            \begin{tikzpicture}
                \pgfmathsetmacro{\col}{ifthenelse(\posP[3]>=0,"green!50!black","red!50!black")}
                \fill[color=\col] (5,1+0) rectangle ++(\posP[3]/2,0.2);
                \draw[thick, color=black, -latex] (0,0) -- (10,0) node[right]{$x$};
                \node[draw,circle,fill] (goal) at (10/1.5,0) {};
                \fill[color=green] (\posP[1]/1.5,0) rectangle ++(1,0.5);                
            \end{tikzpicture}
            \readtolist[ ]{\dataP}{\posP}%
        }
    \end{animateinline}
\end{document}

该文件xP.dat是一个空格分隔的数字列表,可用这里

当我使用 创建动画 PDF 时,此方法非常有效pdflatex。但是,当我尝试通过添加选项\documentclass[dvisvgm]{standalone}然后运行来创建 SVG 文件时

latex filename
latex filename
dvisvgm --exact --font-format=woff --zoom=-1 filename

根据软件包文档,我收到错误

ERROR: error in special: expected '-->' at end of comment

并且编译后的SVG文件是垃圾。

我错过了什么?

答案1

这是一个已确认错误在截至 2021 年 12 月MiKTeX的版本中,团队正在努力实现这一目标。dvisvgmMiKTeX

与此同时,二进制文件此处提供可以,但前提是你已MiKTeX为所有用户安装了(在C:/Program Files)。

相关内容