tikzexternalize 是否优化了保存盒?

tikzexternalize 是否优化了保存盒?

我遇到了一些问题saveboxtikzexternalize当我编译以下代码时,如果external一切按预期工作,如果我启用它,单个图像会正确生成,但最终文档会对其进行优化。

有没有更好的方法将 tikzpictures 组合为另一个 tikzpicture 的节点?我是否正确使用了 savebox?

\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{external}
\tikzexternalize

\begin{document}
\newsavebox{\boxA}
\savebox{\boxA}{
  \begin{tikzpicture}
    \node {I am box A};
  \end{tikzpicture}
}

\newsavebox{\boxB}
\savebox{\boxB}{
  \begin{tikzpicture}
    \node {I am box B};
  \end{tikzpicture}
}

\begin{figure}
\begin{tikzpicture}
  \node (C) {CENTER NODE};
  \node [above=10pt of C] {\usebox{\boxA}};
  \node [below=10pt of C] {\usebox{\boxB}};
\end{tikzpicture}
\end{figure}
\end{document}

预期结果:

预期结果

错误结果tikzexternalize

使用 tikzexternalize 的结果

答案1

我的做法是关闭相关图片的优化。如果你愿意,你可以进一步微调,但至少对我来说,这通常不值得。(图片通常是编​​译过程中最耗时的部分,因此优化其他内容对我来说没有多大用处。因此,据我所知,完全关闭相关图片的优化对编译时间的影响微乎其微。)

例如:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,external}
\tikzexternalize

\begin{document}
\newsavebox{\boxA}
\savebox{\boxA}{%
  \tikzset{external/optimize=false}%
  \begin{tikzpicture}
    \node {I am box A};
  \end{tikzpicture}%
}
\newsavebox{\boxB}
\savebox{\boxB}{%
  \tikzset{external/optimize=false}%
  \begin{tikzpicture}
    \node {I am box B};
  \end{tikzpicture}%
}
\begin{tikzpicture}
  \node (C) {CENTER NODE};
  \node [above=10pt of C] {\usebox{\boxA}};
  \node [below=10pt of C] {\usebox{\boxB}};
\end{tikzpicture}
\end{document}

未优化时的预期输出

相关内容