我遇到了一些问题savebox
,tikzexternalize
当我编译以下代码时,如果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
:
答案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}