我写过论文课也可以在Github。我正在将它用于我的论文并希望包含几个 Tikz/PGFPlots。
当使用外部化库时,自动生成的图形包括标题页和前言,而不仅仅是 tikz 图形。
我最初的想法是,我的文档类设置为自动包含前置内容,而不管选项如何,并且 tikz 将仅使用该类来创建图像,但是现在看来 tikzexternalize 使用主文档中的选项。这导致前置内容包含在图中。
这按预期工作
\documentclass[thesis]{./thesis-gwu}[2018/05/21]
\makeglossaries
\usepackage{pgfplots}
\usepackage{external}
\tikzexternalize
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot {x^2}
\end{axis}
\end{tikzpicture}
\caption{Externalized}
\end{figure}
\end{document}
然而,如果我加上前言(标题页),它就不再起作用了
\documentclass[thesis]{./thesis-gwu}[2018/05/21]
\showtitlepage
\makeglossaries
\usepackage{pgfplots}
\usepackage{external}
\tikzexternalize
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
\addplot {x^2}
\end{axis}
\end{tikzpicture}
\caption{Externalized}
\end{figure}
\end{document}
我创建了一个分支这里尝试调试这个问题,但没有成功。
谢谢你的建议
答案1
你的班级有例如
\AtBeginDocument{ %
\titlepage %
...
}
你需要的是类似
\AtBeginDocument{% do not add spurious space!
\tikzifexternalizing{}{\titlepage}%
...
}
或者,你可以“优化”相关命令,例如
\tikzset{%
external/optimize command away=\titlepage{0},%
}
这显然可以在文档或类文件中完成。
顺便说一句,你想要类似的东西
\AtEndPreamble{%
<code loading hyperref>
<code loading cleveref>
}
以便人们可以在他们的序言中加载其他包。
编辑
如果你选择类路由,你需要确保它tikzifexternalizing
被定义了。但是,你并不想要求人们使用,tikz
如果他们不需要它的话。所以你可以这样做:
\AtBeginDocument{% do not add spurious space!
\providecommand\tikzifexternalizing[2]{#2}%
\tikzifexternalizing{}{\titlepage}%
...
}
如果命令已经定义,则不会有任何区别。如果没有,它将仅使用第二个参数\titlepage
,即,这正是您想要的。由于您无法在之后加载包或库\begin{document}
,因此这允许人们使用tikz
external
或不使用,而不必强制每个使用该类的人加载此代码。