受到这些问题的启发——
—如何将 PSTricks 动画转换为动画 SVG 图像?
SVG 动画比 GIF 更好,因为 SVG 是一种支持流畅动画和任意颜色的矢量格式。
答案1
M. Gieseking 的dvisvgm
是用于从 LaTeX 输入生成 SVG 的最先进的实用程序。最近,dvisvgm
添加了对 的支持animate
。
动画 PSTricks 示例,摘自beamer 演示文稿中的 gif 图像:
使用以下方式编译
乳胶李萨如 乳胶李萨如 dvisvgm --exact --font-format=woff --zoom=-1 利萨如
文件lissajous.tex
:
\documentclass[dvisvgm]{article}
\usepackage{pst-plot,animate}
\pagestyle{empty}
\begin{document}
\begin{animateinline}[%
scale=1.2,
begin={\begin{pspicture}(-2.1,-2.1)(2.1,2.1)},
end={\end{pspicture}},
controls, %palindrome, %autoplay,
poster=last
]{12}
\newframe
\multiframe{144}{rA=25+25,rB=2.5+2.5}{
\psset{algebraic,plotpoints=\rA,linecolor=red}
\parametricplot{0}{\rB}{2*sin(7*t*Pi/180)|2*cos(11*t*Pi/180)}
}
\end{animateinline}
\end{document}
答案2
pdf2svg
Linux 发行版有,或者http://www.cityinthesky.co.uk/opensource/pdf2svg
但我还没尝试过将其制作成动画。
答案3
我唯一能回答你这个问题的方法是:目前不可能,除非你编写(或委托)所需的[额外]软件。
我用于网页动画的一些替代方案:
R 动画包可以输出多种格式,但不支持 SVG+SMIL。但是,它可以生成带有 (CTAN) 动画代码的 LaTeX,这些代码可以转换为真正的动画 PDF。它还可以通过至少两种方式生成网络动画(可能比 SMIL 更通用):Flash (SWF) 和 HTML+javascript(使用 jquery)。更多信息请访问http://www.r-project.org/conferences/useR-2010/slides/Xie.pdf(在 Adobe Reader 中查看动画)和http://www.inside-r.org/packages/cran/animation/docs/saveHTML具有 HTML 特性。有关 HTML 输出的一些演示,请参阅http://vis.supstat.com/2013/03/simulation-of-coin-flipping/ETC。
有一个“PDF”(但实际上是 EPS 序列)到 SWF 的转换器(pdf2swf,SWFtools 的一部分),可以毫不费力地将 METAPOST 转换为 SWF,如下所示http://melusine.eu.org/syracuse/swf/pdf2swf/;法语页面,但有很多例子,例如http://melusine.eu.org/syracuse/metapost/animations/ellipse2/您可能可以通过适量的工作对其进行破解/改编以使其适合来自 PSTricks 的源代码,假设 SWF 输出而不是 SMIL 对您来说没问题。
额外更新:显然有一种方法可以使用 MP4Box 将 SWF 转换为 SVG+SMIL;请参阅http://www.slideshare.net/cconcolato/streaming-of-svg-animations-on-the-web从第 10 张幻灯片开始。我刚刚发现这个演示文稿,所以我不知道它在实践中效果如何。
更新2:似乎唯一对 SVG 动画具有原生支持的 TeX 引擎是 BaKoMa,但它并不是免费的:http://www.bakoma-tex.com/menu/svgwrite.php(这里讨论的 svg.sty 是不是来自 CTAN 的,但是专有的,它依赖于后端/驱动程序上的 SVG 特性,而免费的 TeX 似乎不提供这种特性。)他们有一个演示,其中大部分是免费的动画,网址为http://www.bakoma-tex.com/samples/svgtour.svg。我本来希望看到一些更有用的功能......(为了完整起见,非免费版本的 VTeX 8 也声称对 SVG 动画有某种支持,同样使用他们自己的特色。示例位于http://www.micropress-inc.com/svg.htm在现代浏览器上无法开箱即用,而 VTeX 本身近十年没有更新了,所以我不会真正试图找出他们的示例有什么问题。查看他们生成的 SVG 的源代码,似乎他们使用 Javascript 来制作 SVG 动画,而 BaKoMa 则使用 SMIL,至少在他们的演示的第一张幻灯片中是这样的。)
实用更新(3):好吧,我毫不费力地将 pdf 转换为如何将 pstricks 动画转换为 GIF 文件?转换为 SWF(通过 pdf2swf),在网络浏览器中播放效果很好,但让 MP4box 执行除生成的 SWF 崩溃之外的其他操作到目前为止都是一项挑战。您可能希望继续关注https://sourceforge.net/p/gpac/discussion/287547/thread/ee0d387d/
我使用 Google Swiffy 转换 SWF 没有任何问题(https://www.google.com/doubleclick/studio/swiffy/),它生成 SVG(在渲染时,存储格式为 JSON),但动画使用 Javascript(以及从 JSON 到 SVG 的运行时转换)。以下摘自 Swiffy 论文的内容通常与将关键帧动画转换为 SVG 相关:
选择 SVG 进行渲染为我们提供了几种动画 SVG 内容的选项。乍一看,CSS 动画和 SMIL 都符合我们的设计目标,即尽可能使用声明性表示。但是,当需要支持 ActionScript 脚本时,这两种技术都无法提供足够的动画控制。例如,尽管 CSS 动画中存在关键帧的概念,但它不提供将 JavaScript 代码同步到这些关键帧或从 JavaScript 修改时间轴的机制,而这是 SWF 兼容性所需的基本功能。另一个限制因素是 SWF 文件本身中的动画不是根据高级转换来定义的,而是定义每个对象在特定关键帧的位置。将这些定义映射回 CSS 或 SMIL 转换并不总是可行的。最后,这些标准并不广泛可用:CSS 动画规范仍处于工作草案状态,而 SMIL 尚未在 Internet Explorer 浏览器中实现。因此,我们选择使用 JavaScript 在客户端上为 SVG 制作动画。尽管这种命令式方法可能效率较低,但它提供的控制级别足以匹配所有 SWF 功能。