\tikzexternalize 与 TikZ 在图像上绘图

\tikzexternalize 与 TikZ 在图像上绘图

我正在关注这个非常好的答案这解释了如何使用 TikZ 在图像上绘图。现在我尝试使用 Tikz 库实现我得到的这个新的 tikz 图片external,但出现了错误

包 tikz 错误:抱歉,系统调用“pdflatex -shell-escape -halt-on-e rror -interaction=batchmode -jobname“tikz/myTikzFileName”未产生可用的输出文件“tikz/myTikzFileName”(预期为 .pdf:.jpg:.jpeg:.png: 之一)。

我最后一次从事一个有大约 20 个图形的项目,这些图形都是用 tikz 和 pgfplots 制作的,外部化命令运行完美,直到现在我将 png 文件插入到 tikz 中。

我想要插入到文档中的图形是文件myGraphics.tikz

% myGraphics.tikz
\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=0.9\textwidth]{some-image.png}};
    \begin{scope}[x={(image.south east)},y={(image.north west)}]
        \draw[red,ultra thick,rounded corners] (0.62,0.65) rectangle (0.78,0.75);
    \end{scope}
\end{tikzpicture}

使用tikzscale包实现:

% main.tex
\documentclass[dvipsnames]{beamer}
\usepackage{tikz,tikzscale}
%% To reduce compilation time
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz]

\begin{document}

\begin{frame}{Lorem Ipsum}{dolor sit amet}
Some text
\begin{figure}
\tikzsetnextfilename{myExternalTikzFile}
\includegraphics[height=100pt]{myGraphics}
\end{figure}
\end{frame}

\end{document}

我确实得到了一个非空md5文件,但仅此而已。

有人知道如何解决这个问题吗?

some-image.png这个图片

答案1

在此处输入图片描述

我发现在创建输出文件时可能存在两个问题:

  • 使用来\includegraphics调用.tikz文件;它应该是这样的\input(参见@sheß回答
  • --shell-escape也许您在运行文档时没有使用选项;您需要类似的东西pdflatex -synctex=1 -interaction=nonstopmode --shell-escape main.tex

我在下面插入代码,但其中的重要部分是从 sheß 的答案中借用的。

代码

\documentclass[11pt]{article}
\usepackage{tikz, tikzscale}

%% To reduce compilation time
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz]
\newcommand{\inputtikz}[1]{\tikzsetnextfilename{#1}\input{#1.tikz}}

\usepackage{lipsum}
\begin{document}

\lipsum[1]

\begin{figure}[htb!]
  \centering
  \inputtikz{myGraphics}
  \caption{Boletus nubes}
  \label{fig:1}
\end{figure}

\lipsum[2]
\end{document}

相关内容