结合文档类和 TikZ

结合文档类和 TikZ

我正在尝试使用 document 类将多篇文章合并为一个卷combine。有些文章使用了TikZ包,这似乎在编译过程中导致问题。例如,如果我的主文件是

\documentclass{combine}
\usepackage{tikz}
\begin{document}
\begin{papers}
\coltoctitle{Paper 1}
\coltocauthor{A.~Author}
\import{./author1/paper}
\end{papers}
\end{document}

paper.tex目录中的文档author1包含以下内容

\documentclass{article}
\title{My Paper}
\author{A.~Author}
\date{2013}
\begin{document}
\maketitle
My paper.
\end{document}

然后编译主文档失败,并显示消息“但如果我从主文档中! TeX capacity exceeded, sorry [save size=5000].删除包,则一切都会正常工作。”(当然,当包含的文件实际使用包时,这不是一个选项。)除了手动将所有图片转换为图像文件外,还有其他方法可以解决这个问题吗?TikZTikZ

答案1

这似乎是一种不兼容性;everyshi 包周围的某些东西以及 tikz 安装的钩子导致了无限循环。

我不知道如何立即修复根本原因(这很好;我建议你询问组合包的作者发生了什么),但一种方法可能是使用外部库。

这里我想详细说明一下外部库的使用方法。这可能是也可能不是一个选择;但值得一试。

假使,假设全部您所包含的使用 tikz 的论文也使用了 tikz 附带的外部库。因此,全部它们的图片也可以作为单独的.pdfs 使用。然后(也只有这样)你才能摆脱\usepackage{tikz}。显然,你想避免接触每个输入文件的必要性!幸运的是,外部库附带一个不需要tikz但可以读取外部.pdfs 的选项。

为此,您必须取消注释 every\usepackage{tikz}并使用\usepackage{tikzexternal}。该文件tikzexternal.sty是一种样式文件,它在某种程度上“支持”环境,\begin{tikzpicture} ...\end{tikzpicture}因为它用相关的外部化替换环境.pdf- 无需您采取更多行动。

唯一的问题是这些文件可能包含前导配置。这些配置需要停用。幸运的是,该tikzexternal包已经停用了\tikzset\pgfkeys还有一些其他配置。如果需要,您可以停用更多配置(通过定义任何未定义的宏)。

这是您的最小示例:

主要文件:

\documentclass{combine}
\usepackage{tikzexternal}
\begin{document}
\begin{papers}
\coltoctitle{Paper 1}
\coltocauthor{A.~Author}
\import{paper}
\end{papers}
\end{document}

文件paper.tex

\documentclass{article}
\title{My Paper}
\author{A.~Author}
\date{2013}

\usepackage{tikzexternal}
%\usetikzlibrary{external}
\tikzexternalize

\tikzset{/some/option/.initial=just to see what happens}

\begin{document}
\maketitle
My paper.

\begin{tikzpicture}
    \draw (0,0) grid (10,10);
\end{tikzpicture}
\end{document}

您会看到,我已对其进行了修改paper.tex,以便它实际上使用了 tikz。

当然,您需要先使用tikz及其外部库对其进行编译,即您需要 (a) 重新激活\usepackage{tikz}\usetikzlibrary{external}(b) 停用\usepackage{tikzexternal}并运行pdflatex -shell-escape paper.tex。然后,切换回tikzexternal(即上面的代码)并main.tex照常进行编译。

如果你的论文包含代码,你可能还pgfplots需要取消注释并说\usepackage{pgfplots}

\def\pgfplotsset#1{}

以便用空的虚拟变量替换其配置宏。

可能的警告:

  • tikzexternal.sty可能无法反映 tikz 中的最新变化,即它可能不完整或有缺陷。
  • 如果论文使用\label\ref在代码中引用图像pgfplots,我不知道是否tikzexternal.sty能够解决这些特殊引用。这是一个特殊情况。

相关内容