由于我的子章节位于不同的文件中,我的LaTeX会在每个子章节后面产生分页符。我使用\include{file}
命令,在使用该命令后会添加分页符。
我希望在使用\include{file}
命令时不再产生分页符。
如何在使用include
命令后不产生分页符?
由于我的子章节位于不同的文件中,我的LaTeX会在每个子章节后面产生分页符。我使用\include{file}
命令,在使用该命令后会添加分页符。
我希望在使用\include{file}
命令时不再产生分页符。
如何在使用include
命令后不产生分页符?
\include
始终使用 \clearpage
,这是一个不太明智的默认选项。它适用于整个章节,而不适用于子节(反正你为什么要将子节放在单独的文件中呢?)。
您可以通过使用 \input{filename}
或加载 newclude
包并使用 \include*{filename}
来解决这个问题。
:)
。 - Will Robertson\include
开始新页面的原因是为了让 \includeonly
能够正常工作。 - Carsten S你可以在\include
之前加上\let\clearpage\relax
来避免因此引起的分页。因此,
\let\clearpage\relax
\include{file1}
\include{file2}
\include{file3}
会将三个文件(以及任何随后包含的文件)的内容放在一起,它们之间没有分页符。如果您想停止放松 \clearpage
命令,则可以像这样将要包含但不带分页符的文件包装在一个组中:
\begingroup
\let\clearpage\relax
\include{file1}
\include{file2}
\endgroup
\include{file3}
这将防止在file1和file2之间发生分页,但在file2后插入正常的分页。(注意:我不知道这是否会影响引用和页码,虽然我认为应该没问题。)
威尔·罗伯逊建议使用的新包含包非常有用,可以避免使用clearpage。看起来,为了使\includeonly
起作用,必须在\documentclass{...}
之后立即调用该包。在我的论文复杂环境中,我也遇到了引用断裂的问题。
一个好的解决方法是,在最终版本不需要includeonly时,仅在草稿中使用includes:
\newif\ifdraft\drafttrue
或者
\newif\ifdraft\draftfalse
\ifdraft
\include{...}
\fi
\ifdraft
\include{file}
\else
\input{file}
\fi
第一行可以很容易地通过makefile添加,以制作草稿或生产版本的生产目标。
\includeonly{file1,file2,...}
允许指定一个源文件列表,调用 \include{file1}
(其中 file1
是一个示例)将显示在生成的文档中。其他文件不会出现,但在包含相应的辅助文件时,将被考虑在计数器、标签和内容表中。
换句话说,通过使用include
和includeonly
,可以在草稿中保持编译时间短,同时具有正确的引用。
更多阅读请参见Wikibooks。
@Will Robertson
\include
非常有用,因为它允许通过\includeonly{...}
仅构建所需的部分。在处理长文本时,仅包含长章节的一部分可以大大减少编译时间。它还非常有用,因为在处理某个点时无需翻页长草稿。最后,在版本管理中处理较小的源代码文件更加容易,例如Git。
以下代码在大多数情况下都很健壮:
\cleardoublepage
\begingroup
\let\clearpage\relax
\include{./common/yourFile.tex}
\endgroup
第一个 \cleardoublepage 确保你的章节在双面打印时落在奇数页。
\let\clearpage\relax 取消了 \include 插入的 clearpage。
\begingroup \endgroup 确保作用域仅限于该 include。
谢谢你,剑桥!
使用\include而不是\input,并使用\includeonly命令选择要处理的部分。
\input{...}
是真正用于这些情况的命令时,你还想使用\include{...}
来完成工作呢? - Florian R. Klein
\input
,否则使用\input
,或者使用\input
。 - egreg