我想使用以下方法自动将 pdf 转换为 gif 动画:animate
规则由 cmhughes 提供,以回答使用 tikz 绘制序列 x_n。
我在 Windows 上使用 arara+texworks+miktex。我还安装了 imagemagick 并从命令行运行。
我已将 cmhughes 代码保存animate.yaml
在我的\rules
文件夹中。我添加
% arara: pdflatex
% arara: animate
到我的 tex 文件(例如,这个 pgfplots 代码)并使用 进行编译arara
。结果是一个正确的 pdf 文件,但启动时animate
会显示一条消息
Running animate ...
Parámetro no válido: 10
FAILURE
Parámetro no válido
意思non valid parameter
是我不知道哪个程序(arara,convert)显示它。
我使用 TeXworks 的 arara 以及选项--log
和--verbose
。编译 tex 文件后,arara.log
包含:
05 Jun 2013 15:52:58.687 INFO Arara - Welcome to arara!
05 Jun 2013 15:52:58.687 INFO Arara - Processing file '117309.tex', please wait.
05 Jun 2013 15:52:58.703 INFO DirectiveExtractor - Reading directives from 117309.tex.
05 Jun 2013 15:52:58.703 TRACE DirectiveExtractor - Directive found in line 1 with animate: {density: 200, delay: 10}.
05 Jun 2013 15:52:58.812 INFO DirectiveParser - Parsing directives.
05 Jun 2013 15:52:58.812 INFO TaskDeployer - Deploying tasks into commands.
05 Jun 2013 15:52:58.812 TRACE TaskDeployer - Task 'animate' found in 'D:\Archivos de programa\arara\rules'.
05 Jun 2013 15:52:59.125 INFO CommandTrigger - Ready to run commands.
05 Jun 2013 15:52:59.125 INFO CommandTrigger - Running 'animate'.
05 Jun 2013 15:52:59.125 TRACE CommandTrigger - Command: convert -delay 10 -loop 0 -density 200 "117309.pdf" "117309.gif"
05 Jun 2013 15:52:59.265 TRACE CommandTrigger - Output logging:
05 Jun 2013 15:52:59.265 TRACE CommandTrigger - Par metro no v lido: 10
05 Jun 2013 15:52:59.265 WARN CommandTrigger - 'animate' returned an error status.
05 Jun 2013 15:52:59.265 INFO Arara - Done.
(空行是原来的,不是我的错误编辑它)
无论如何,运行命令
convert -delay 10 -loop 0 -density 300 myfile.pdf myfile.gif
从命令窗口运行并创建一个 gif 文件。此命令就是它试图执行的操作arara: animate
。
你知道什么地方出了问题吗?
答案1
arara 版本 4.0 答案
arara
版本 4.0 附带animate.yaml
,Windows 用户可能会使用以下内容,例如:
% arara: animate: {program: magick.exe}
旧答案,已过时
以下答案已过时
我很抱歉我的规则不够完善:)
正如评论中所述,我最初的答案的问题是 Windows 可能无法正确获取路径。您可以使用以下方法修复它:
- <arara> @{ isWindows( "cmd /c convert", "convert" ) } -delay @{delay} -loop @{loop} -density @{density} "@{ getBasename(file) }.pdf" "@{ getBasename(file) }.gif"
这是一个完整的跨平台版本
!config
# Make animated .gif file from .pdf
# author: Chris Hughes
# last edited by: cmh, June 6th 2013
# requires arara 3.0+
#
# Sample usage:
#
# % arara: animate
# % arara: animate: {density: 200}
# % arara: animate: {density: 200, delay: 20}
#
# This rule is really just a shortcut for commands like the following
#
# convert -delay 10 -loop 0 -density 300 myfile.pdf myfile.gif
#
# which will output myfile.gif
#
identifier: animate
name: animate
commands:
- <arara> @{ isWindows( "cmd /c convert", "convert" ) } -delay @{delay} -loop @{loop} -density @{density} "@{ getBasename(file) }.pdf" "@{ getBasename(file) }.gif"
arguments:
- identifier: delay
flag: <arara> @{parameters.delay}
default: 10
- identifier: loop
flag: <arara> @{parameters.loop}
default: 0
- identifier: density
flag: <arara> @{parameters.density}
default: 300