有两个不同的命令可以将另一个文件合并到某个文档的源中,分别是\input
和\include
。我什么时候应该使用其中一个?它们之间有什么区别?还有更多类似的东西需要注意吗?
答案1
\input{filename}
将命令从filename.tex
导入到目标文件中;这相当于将所有命令从filename.tex
直接输入到该行所在的当前文件中\input
。
\include{filename}
本质上是执行了\clearpage
before 和 after \input{filename}
,以及一些切换到另一个.aux
文件的魔法,并且如果参数中没有文件名,则完全省略包含\includeonly
。这主要适用于在慢速计算机上进行大型项目时;更改其中一个包含目标不会强制您重新生成所有其他输出。
\include{filename}
可以为您带来速度奖励,但它也不能嵌套,不能出现在序言中,并且强制在包含的文本周围分页。
答案2
简短回答:
\input
是一个更低级别的宏,它只是输入给定文件的内容,就像手动复制并粘贴一样。\include
将文件内容作为其自己的逻辑单元(例如章节)处理,并使您能够仅包含特定文件以\includeonly{filename,filename2,...}
节省时间。
长答案:
宏\input{<filename>}
使 LaTeX 处理给定文件的内容的方式与在 的同一位置写入 的方式基本相同\input
。 的 LaTeX 版本仅进行一些健全性检查,然后使用被 LaTeX重命名为 的\input
TeX原语。\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
由命令包围的一样\clearpage
。include
还支持该\includeonly
机制。因此,文件:
\documentclass{article}
\includeonly{c}
\begin{document}
AAA
\include{b}
\include{c}
AAA
\end{document}
与前面一样使用b.tex
和c.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 放入第一个参数中。