我正在尝试使用 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].
删除包,则一切都会正常工作。”(当然,当包含的文件实际使用包时,这不是一个选项。)除了手动将所有图片转换为图像文件外,还有其他方法可以解决这个问题吗?TikZ
TikZ
答案1
这似乎是一种不兼容性;everyshi 包周围的某些东西以及 tikz 安装的钩子导致了无限循环。
我不知道如何立即修复根本原因(这很好;我建议你询问组合包的作者发生了什么),但一种方法可能是使用外部库。
这里我想详细说明一下外部库的使用方法。这可能是也可能不是一个选择;但值得一试。
假使,假设全部您所包含的使用 tikz 的论文也使用了 tikz 附带的外部库。因此,全部它们的图片也可以作为单独的.pdf
s 使用。然后(也只有这样)你才能摆脱\usepackage{tikz}
。显然,你想避免接触每个输入文件的必要性!幸运的是,外部库附带一个不需要tikz
但可以读取外部.pdf
s 的选项。
为此,您必须取消注释 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
能够解决这些特殊引用。这是一个特殊情况。