使用 时\include{file}
,如果包含文件是完整的 LaTeX 文档,带有documentclass{}
、\begin{document}
等,则会产生错误。如果我删除除内容(\begin{document}
和之间的内容\end{document}
)之外的所有内容,则不会产生错误。
但是命令的真正意义不就是\include
要与长文档分开工作吗?如果我不能单独编译包含文件(没有前言等),那还有什么意义呢?
\include
例如,单独处理长文档的某一章节的最佳选择是什么?
答案1
但是命令的真正意义不就是
\include
要与长文档分开工作吗?
没错,但不是命令的要点\include
包括完全的文档,正如你尝试做的那样;相反,它适用于碎片一份文件。
如果我无法单独编译包含文件(没有前言等)有什么意义呢?
重点不在于您是否拥有完整的文档。如果您只想编译某些章节而不编译其他章节,您可以使用命令\includeonly
指定要包含哪些章节,以及不包括哪些章节。
\include
例如,单独处理长文档的某一章节的最佳选择是什么?
这是现成的最佳选择。但是,您可以创建自己的宏,可能更适合您的具体情况(这就是我为我的硕士论文所做的)。
对于您的特定用例,您可以创建一个禁用\documentclass
、\usepackage
和\begin/end{document}
命令的新宏。例如,这可能如下所示(未经测试!):
\newcommand\includedocument[1]{%
\begingroup
\renewcommand\documentclass[2][]{}
\renewcommand\usepackage[2][]{}
\let\document\relax
\let\enddocument\relax
\include{#1}
\endgroup}
答案2
我一直将此{standalone}
包用于此目的。它基本上提供了 Konrad 提到的功能。独立文件应使用:
\documentclass[preview=false]{standalone}
include
并且此独立文件需要具有完整的前言,包括的主要文件\usepackage{standalone}
。
软件包作者 Martin 提供了这里有很好的例子。
答案3
\includes 旨在将内容拆分成单独的部分,这样您就不必将所有内容都放在整个文件中,但它们是直接的“立即将此文件的全部内容放到此处”语句。它不会尝试弄清楚您只想要另一个文件的一部分。
因此,要实现您的目标,您有两个选择:
- 将主文件中的所有内容放在一个位置,然后注释掉所有其他包含的内容但您正在处理的章节。
- 创建另一个顶层文档用于包含仅有的有问题的章节。
- 继续编译整个内容。从时间上看,这样做可能不需要花费太多时间。Includes 仍允许您进行组织,从而更轻松地找到您当前想要编辑的内容。