使用 \tikzexternalize

使用 \tikzexternalize

我想tikzexternalize在我的文档中使用,因为 tikz 图片的数量相当大。通常,我的 tikz 图片是通过matlab2tikz将每个 tikz 图片作为 来生成的standalone。例如,主文档如下所示:

\documentclass{article}
\usepackage{standalone}
\usepackage{pgfplots}
\pgfplotsset{/pgf/number format/use comma}
\pgfplotsset{compat=newest}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize % activate!
\begin{document}
%
\begin{figure}
\centering
\includestandalone[width=0.8\linewidth]{./fig_01}
\caption{mycaption}
\label{fig:01}
\end{figure}
%
\end{document}

在该文件中,fig_01使用以下简化的代码生成matlab2tikz

\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{grffile}
\pgfplotsset{compat=newest}
\usetikzlibrary{plotmarks}
\usepgfplotslibrary{patchplots}
\usepackage{amsmath}

\begin{document}
%
\begin{tikzpicture}
\draw (2,2) ellipse (3cm and 1cm);
\end{tikzpicture}%
\end{document}

虽然从主程序中排除第 7 行和第 8 行,但编译工作正常 - 但激活外部化后则不然。

pdflatex我在 TexStudio 中的编译命令是:

"/usr/local/texlive/2015/bin/universal-darwin/pdflatex" -synctex=1 -interaction=nonstopmode %.tex

答案1

外部化依赖于“shell escape”。当此功能受到限制或禁用时,外部化将无法工作,因为它需要编译器生成额外的编译命令才能单独创建每个图片。

默认情况下,出于安全原因,此功能被禁用。可能会生成一组受限制的命令,但这组命令不足以编译图片。

因此,您需要通过明确允许不受限制的 shell 转义进行编译来覆盖默认设置:

"/usr/local/texlive/2015/bin/universal-darwin/pdflatex" -synctex=1 -interaction=nonstopmode -shell-escape

答案2

我刚刚用这个找到了我的问题的答案线。虽然在以前的编译过程中找不到pdflatex包含该选项,但现在一切正常。将命令的文件夹更改为-shell-escape/图书馆/TeX/texbin/...并将其添加到构建->命令($PATH)在设置中完成了我所寻找的事情。

相关内容