我正在尝试使用 Windows 7 中的 ImageMagick 自动将外部化的 eps 图像转换为 png 文件。挑战在于 ImageMagick 无法可靠地添加到系统路径,因为 convert 不是唯一的 Windows 命令(请参阅:http://www.imagemagick.org/Usage/windows/#convert_issue)。因此,我定义了一个名为 IMAGEMAGICK 的环境变量作为我的便携式 ImageMagick 文件夹的路径:IMAGEMAGICK = C:\Tools\ImageMagick。从命令行我可以发出转换命令:%IMAGEMAGICK%\convert myfig.eps myfig.png
这里的问题是让 tikz 使用 %IMAGEMAGICK% 变量,因为 % 是注释符号。我试过了,但是没有用:
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image.dvi" &&
ps2epsi \image.ps \image.eps &&
"\%IMAGEMAGICK\%/convert" -density 1200 "\image.eps" "\image.png" }}
(关键部分是最后一句)。
当我查看日志文件时,%符号没有被正确转义:
===== 'mode=convert with system call': Invoking 'latex -enable-write18 -halt-on
-error -interaction=batchmode -jobname "tikzpngeps/externalize_png_eps-figure0"
"\def\tikzexternalrealjob{externalize_png_eps}\input{externalize_png_eps}" &&
dvips -o "tikzpngeps/externalize_png_eps-figure0".ps "tikzpngeps/externalize_pn
g_eps-figure0.dvi" && ps2epsi tikzpngeps/externalize_png_eps-figure0.ps tikzpng
eps/externalize_png_eps-figure0.eps && "\%IMAGEMAGICK\%convert" -density 1200 "
tikzpngeps/externalize_png_eps-figure0.eps" "tikzpngeps/externalize_png_eps-fig
ure0.png"' ========
\openout3 = `externalize_png_eps.auxlock'.
如何让 % 出现在转换命令中?或者有更好的替代方案吗?
答案1
我无法测试,但你可以通过添加来获得你想要的东西
\makeatletter
\edef\IMAGEMAGICK{\@percentchar IMAGEMAGICK\@percentchar}
\makeatother
在序言中并使用
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image.dvi" &&
ps2epsi \image.ps \image.eps &&
"\IMAGEMAGICK/convert" -density 1200 "\image.eps" "\image.png" }}
或者可能,
\makeatletter
\edef\IMAGEMAGICKconvert{\@percentchar IMAGEMAGICK\@percentchar\string\convert}
\makeatother
和
\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image.dvi" &&
ps2epsi \image.ps \image.eps &&
"\IMAGEMAGICKconvert" -density 1200 "\image.eps" "\image.png" }}