tikzexternalize 和转换为 png 的问题(lualatex)

tikzexternalize 和转换为 png 的问题(lualatex)

我想使用 externalize 库。到目前为止,它运行良好并创建了 pdf 文档。但现在我想获取“png”文件。根据 externalize 文档,我尝试了以下操作:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=,figure list=true] 

\tikzset{
    png export/.style={
        % First we call ImageMagick; change settings to requirements
        external/system call/.add={}{& magick.exe -density 300 "\image.pdf" "\image.png"},
        % Now we force the PNG figure to be used instead of the PDF
        /pgf/images/external info,
        /pgf/images/include external/.code={
            \includegraphics[width=\pgfexternalwidth,height=\pgfexternalheight]{##1.png}
        },
    }
}

\begin{document}
    \tikzset{png export}
    \tikzsetnextfilename{Figure-A}%
    \begin{tikzpicture}
        \draw (0,0) circle (2) ;
    \end{tikzpicture}
\end{document}

但这确实会导致 Windows 11 + MiKTeX Console 4.9 + TeXstudio 4.5.2(git 4.5.2)+ ImageMagick 7.1.1-5 Q16-HDRI x64 + lualatex(LuaHBTeX,版本 1.16.0(MiKTeX 23.1))中出现错误:

进程:lualatex.exe -synctex=1 -interaction=nonstopmode -shell-escape "main".tex

解释:“认为“magick.exe”编写错误或无法创建链接。” (英文意思是:“命令“magick.exe”拼写错误或无法找到。”)

日志:“包 luatex.def 错误:未找到文件‘Figure-A.png’:使用草稿设置。\end{tikzpicture}”

据我所知,Figure-A.log 文件没有显示任何错误,但 main.log 文件在此行显示错误:

\openout4 = main.figlist

Writing 'Figure-A' to 'main.figlist'.

\openout3 = Figure-A.md5

\openout3 = main.auxlock
===== 'mode=convert with system call': Invoking 'lualatex -shell-escape -halt-o
n-error -interaction=batchmode -jobname "Figure-A" "\def\tikzexternalrealjob{ma
in}\input{main}"& magick.exe -density 300 "Figure-A.pdf" "Figure-A.png"' ======
==

\openout3 = main.auxlock

LaTeX Warning: File `Figure-A.png' not found on input line 24.


! Package luatex.def Error: File `Figure-A.png' not found: using draft setting.


See the luatex.def package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.24    \end{tikzpicture}
                     
Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

概括:

-) Figure-A.pdf 文件已创建,但从“pdf”文件到“png”文件的转换似乎存在问题。

-) 如果我在命令行而不是 TeXStudio 上运行该过程,则会出现同样的问题。

-) 当我在一次 latex 运行(生成 Figure-A.pdf)后在命令行上尝试“magick.exe -density 300 "Figure-A.pdf" "Figure-A.png"”时,它完美地生成了图像“Figure-A.png”。

-) 我发现它适用于 pdflatex,所以这似乎是 lualatex 的问题。虽然我不知道问题出在哪里,但我需要 lualatex...

如果有人能调查此事并帮助我,我将不胜感激。

答案1

正如 @cfr 指出的那样,使用可执行文件的完整路径解决了该问题,在我的情况下意味着以下路径:

external/system call/.add={}{& "C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI\\magick.exe" -density 300 "\image.pdf" "\image.png"}

这将首先生成 pdf 文件,然后生成 png 文件,然后将 png 包含在我的文档中。

相关内容