使用注释图像时 TikZ 外部化失败

使用注释图像时 TikZ 外部化失败

tikzexternalize在我使用annotationimage环境之前,它工作正常(无论出于什么原因,如果不禁用外部化,它本身就无法工作):

\RequirePackage{mwe}
\documentclass{article}

\usepackage{graphicx}

\usepackage{tikz,pgfplots,tikz-imagelabels}
\usetikzlibrary{external}
\tikzexternalize[prefix=plot_]

\begin{document}

\tikzset{external/force remake}
\tikzsetnextfilename{01}
\begin{figure}[h]
    \centering%
    \begin{tikzpicture}%[trim axis left, trim axis right]
        \begin{axis}
            \addplot+ coordinates {%
                (0,20)%
                (60,-40)%
                (150,-40)%
            };%
        \end{axis}
l    \end{tikzpicture}%
\end{figure}

%\tikzset{external/export next = {false}}
%\begin{figure}
%    \centering%
%    \begin{annotationimage}{width = 4cm}{example-image-a}
%        \draw[coordinate label = {Annotation at (0.2,0.2)}];
%    \end{annotationimage}%
%\end{figure}

\end{document}

日志显示system commands enabled(我正在使用--shell-scape)。

如果我取消注释最后一部分,我收到以下错误并且外部化的 PDF 消失:

! Package tikz Error: Sorry, the system call 'lualatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "plot_01" "\def\tikzexternalrealjob{tikzex
ternalize}\input{tikzexternalize}"' did NOT result in a usable output file 'plo
t_01' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify that you have enab
led system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it 
is also named 'write 18' or something like that. Or maybe the command simply fa
iled? Error messages can be found in 'plot_01.log'. If you continue now, I'll t
ry to typeset the picture.

这是一个错误,还是我遗漏了什么?

仅供参考:我在 Windows 10 上使用 TeXstudio,没有管理员权限。我在主文件夹中安装了 TL2023(类似于%userprofile%\stuff\texlive)。我必须在%userprofile%\stuff\texlive\2023\bin\windowsTeXstudio 中输入路径作为 tikzexternalize 的搜索路径才能找到 lualatex。

答案1

由于 Ulrike Fischer 已经在评论中回答了您的问题,因此这个答案解决了另一个问题,即如何外部化带注释的图像。

memoize毫不费力地记住annotationimage,记忆速度更快,而且这个过程甚至不需要不受限制的 shell 转义。需要两次编译来稳定文档,但第二次只需要包含外部化(记忆化)图像。这些图像的生成是第一次编译运行的一部分。与 Ti 不同Z 的外部化方法,没有单独的编译过程。

\documentclass{article}
\usepackage{memoize}
\usepackage{tikz,pgfplots,tikz-imagelabels}
\mmzset{%
  auto={annotationimage}{memoize}
}
\pgfplotsset{compat=1.18}
\begin{document}

\begin{figure}% you don't want to use simply h for placement and latex will change it if you do
  \centering
  \begin{tikzpicture}%[trim axis left, trim axis right]
    \begin{axis}
      \addplot+ coordinates {%
        (0,20)%
        (60,-40)%
        (150,-40)%
      };%
    \end{axis}
    l    \end{tikzpicture}% does the l here serve any purpose?
\end{figure}

\begin{figure}
  \centering
  \begin{annotationimage}{width = 4cm}{example-image-a}
    \draw[coordinate label = {Annotation at (0.2,0.2)}];
  \end{annotationimage}%
\end{figure}

\end{document}

绘制并注释带有记忆化外部化的图像

https://tex.stackexchange.com/a/698555/以获得非常基本的介绍memoize

相关内容