何时应使用 \input 和 \include?

何时应使用 \input 和 \include?

有两个不同的命令可以将另一个文件合并到某个文档的源中,分别是\input\include。我什么时候应该使用其中一个?它们之间有什么区别?还有更多类似的东西需要注意吗?

答案1

\input{filename}将命令从filename.tex导入到目标文件中;这相当于将所有命令从filename.tex直接输入到该行所在的当前文件中\input

\include{filename}本质上是执行了\clearpagebefore 和 after \input{filename},以及一些切换到另一个.aux文件的魔法,并且如果参数中没有文件名,则完全省略包含\includeonly。这主要适用于在慢速计算机上进行大型项目时;更改其中一个包含目标不会强制您重新生成所有其他输出。

\include{filename}可以为您带来速度奖励,但它也不能嵌套,不能出现在序言中,并且强制在包含的文本周围分页。

答案2

简短回答:

\input是一个更低级别的宏,它只是输入给定文件的内容,就像手动复制并粘贴一样。\include将文件内容作为其自己的逻辑单元(例如章节)处理,并使您能够仅包含特定文件以\includeonly{filename,filename2,...}节省时间。


长答案:

\input{<filename>}使 LaTeX 处理给定文件的内容的方式与在 的同一位置写入 的方式基本相同\input。 的 LaTeX 版本仅进行一些健全性检查,然后使用被 LaTeX重命名为 的\inputTeX原语。\input\@@input

值得一提的属性\input有:

  • 基本上可以\input在任何地方使用任何内容
    它可在序言、包内和文档中使用。
  • 您可以嵌套\input宏。
    您可以\input在使用 读取的文件内部使用\input
  • 唯一\input要做的事情就是输入文件。
    您不必担心任何副作用,但不会获得任何额外的功能。

\include{<filename>}宏更大,应该用于更大量的内容,例如章节,人们可能希望在编辑过程中自行编译。

\include基本上做了以下事情:

  • 它使用\clearpage文件内容之前和之后的内容。这确保其内容从其自己的新页面开始并且不会与之前或之后的文本放在一起。
  • .aux它为给定的文件打开一个新文件。
    filename.aux文件名开头 会有一个包含所有计数器值(如页码和章节号等)的文件。这样,文件可以单独编译,但仍具有正确的页码和章节号等。这样部分辅助文件由主辅助文件读取。
  • 然后它在内部使用它\input来读取文件的内容。

值得一提的属性\include有:

  • 它不能在文档之外的任何地方使用,并且只能在允许分页符的地方使用。
    由于 和\clearpage自身.aux文件\include在前言中不起作用,在包内。在受限模式或数学模式下使用它将无法正常工作,而\input在那里则没问题。
  • 您不能嵌套\include文件。
    您不能\include在由 读取的文件中使用它\include。这是有意为之,是为了避免文件出现问题.aux。否则三个.aux文件(主文件、父文件\include、子文件\include)将同时打开,我想这太复杂了。
    您可以在文件\input内部使用\include,也可以\input在文件中使用\include
  • 最大的好处: 您可以\includeonly{filename1,filename2,...}在序言中使用仅包含特定\include文件。
    因为文档的状态(即上述计数器值)存储在自己的.aux文件中,所以所有页码和章节号仍然正确。这在大型文档的编写过程中非常有用,因为它允许您只编译当前正在编写的章节,而跳过其他章节。此外,如果坚持使用,它可用于创建文档子部分的 PDF,例如仅前言或除附录之外的所有内容等。
    还有一个excludeonly包,它提供了一个\excludeonly仅排除某些文件而不是包含所有其他文件的选项。

答案3

\input有效地用输入文件的内容替换命令。\input可以嵌套。 因此,您可以编写:

\documentclass{article}

\begin{document}

AAA

\input{b}

AAA

\end{document}

其中 b.tex 为:

BBB

\input{c}

BBB

并且 c.tex 是:

CCC

得到如下输出:

AAA
BBB
CCC
BBB
AAA

include在包含的材料之前和之后触发新页面,就像您使用了\input由命令包围的一样\clearpageinclude还支持该\includeonly机制。因此,文件:

\documentclass{article}

\includeonly{c}

\begin{document}

AAA

\include{b}

\include{c}

AAA 

\end{document}

与前面一样使用b.texc.tex,将AAA在第一页、CCC第二页和AAA第三页产生输出。

\include和组合\includeonly对于处理长文档非常有用:您可以\includeonly编辑文件,并且编译速度会快得多。如果您在使用 之前对整个文件进行两次运行\includeonly,页码和交叉引用将保持有效,从而加快\includeonly编译速度。

答案4

input关于和命令的回答很棒include。如果您需要嵌套此.tex档案,请import带来 的包\import

% at preamble
\usepackage{import}

% where you need
\import{〈full_path〉}{〈file〉}

假设您有名为preamble和 的目录text。在序言中,您有general.tex(在其中调用大部分包)、fonts.tex(在其中调用有关字体、编码和配置的信息)和commands.tex(在其中定义自定义宏和命令)。您还有另一个colors.tex,在其中定义了很多颜色,它在您的 中general.tex使用 import 调用。在 中,text您按章节和部分命名了您的作品。您可以执行以下main.tex操作:

\documentclass{memoir}

\usepackage{import}

\import{preamble/}{general}
\import{preamble/}{fonts}
\import{preamble/}{commands}

\begin{document}

\frontmatter
 \import{text/}{titlepage}
 \tableofcontents
...

\mainmatter
%--- Part 1
 \import{text/}{1-1.1-Name1.1}
 \import{text/}{1-1.2-Name1.2}
...
%--- Part 2
 \import{text/}{1-2.1-Name2.1}
 \import{text/}{1-2.2-Name2.2}
.
.
.
\end{document}

最好的事情是,在您调用的任何 .tex 中,您都可以使用\import- 类似在其内部general.tex调用的方式调用另一个 .tex colors.tex。您需要将/路径的 final 放入第一个参数中。

相关内容