tikzset 转义字符(用于外部化的路径)

tikzset 转义字符(用于外部化的路径)

我正在尝试使用 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" }}

相关内容