关于 LaTeX 中的 \include

关于 LaTeX 中的 \include

使用 时\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 旨在将内容拆分成单独的部分,这样您就不必将所有内容都放在整个文件中,但它们是直接的“立即将此文件的全部内容放到此处”语句。它不会尝试弄清楚您只想要另一个文件的一部分。

因此,要实现您的目标,您有两个选择:

  1. 将主文件中的所有内容放在一个位置,然后注释掉所有其他包含的内容您正在处理的章节。
  2. 创建另一个顶层文档用于包含仅有的有问题的章节。
  3. 继续编译整个内容。从时间上看,这样做可能不需要花费太多时间。Includes 仍允许您进行组织,从而更轻松地找到您当前想要编辑的内容。

相关内容