LaTeX中的\ include后如何没有分页符


110

我的LaTeX使我在每个小节之后都分页,因为我的小节位于单独的文件中。我使用的命令\include{file}在使用后添加一个分页符。

我不希望使用引起分页符\include{file}

使用include-command 后如何无法分页?


2
我认为您通常不会在小节后得到分页符。您正在使用什么文档类?
卡斯卡贝尔

1
您能否张贴标头(所有内容,直到\ begin {document}为止),这样我们才能知道出了什么问题?
杰拉尔德·塞纳克伦斯·德·格兰西

10
使用\input,否则使用\input,否则使用\input
egreg 2014年

Answers:


4

威尔·罗伯逊(Will Robertson)建议的newclude软件包对于避免清除页面非常有用。出现,为了\includeonly工作,必须在之后立即调用软件包\documentclass{...}。在我的论文的复杂环境中,我还遇到了参考文献破损的问题。

当最终版本不需要includeonly时,一个好的解决方法是仅在草稿中使用include:

\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

@威尔·罗伯逊

\include之所以有用,是因为它只允许\includeonly{...}构建所需的部分。在处理较长的文本时,仅包括一长篇章节中的一部分,可能会大大缩短编译时间。它也非常有用,因为在某一时间工作时不必翻阅较长的草稿。最后,较小的源代码文件在版本管理中更易于处理,例如git。


您能否举个例子,说明您如何只编写一份很长的工作文件的一部分?我已经在pageselabout \discardpagesfromhere和中使用了以下答案的这些方法\keeppagesfromhere。它们彼此之间几乎没有重叠,所以我愿意学习您是否可以更好地处理这份管理草案。tex.stackexchange.com/a/267555/13173
莱奥列奥波尔德·赫兹준 영

1
如果我理解它是正确的,那么通过允许精细控制要在最终版本中包含哪些页面,pagesel可以实现比includeonly更大的目标。Include的范围要小得多,以可以打开和关闭的方式包含源代码。
gschenk '16

152

\include始终使用\clearpage,并非完全明智的默认值。它适用于整个章节,而不适用于各小节(无论如何,为什么要将小节放在单独的文件中?)。

您可以通过使用\input{filename}或加载newclude程序包并编写\include*{filename}来修复它。


我的数据库项目需要Planning文档中的“ Building”文档,以显示如何设置系统。它们是我的LaTeX文件中的部分。
莱奥波德·赫兹(LéoLéopoldHertz),2009年

7
我可以想到一堆将小节放在不同文件中的原因。首先想到的是,根据目标和/或职位应用,简历的详细程度有所不同。一旦使用一个“%”符号,就可以轻松地将比特砍掉或放入比特。
尼古拉斯·汉密尔顿

8
它已经有一段时间我写了这个答案,但我相信,括号本来是讽刺:)
威尔·罗伯逊

\include开始新页面的原因是\includeonly可以正常工作。
卡斯顿S

将部分裁剪为不同文件的另一个原因:考虑编写练习表,始终在开头始终带有标题,但始终仅在打印输出中包括一个练习表。我本人不会将每个练习单都视为一章本身,尤其是因为更多的练习单是指讲座中的单个章节。includeonly用作对练习纸进行计数,例如带有练习(1.1-1.4)的练习表1,带有练习(2.1-2.3)的练习表2,依此类推。
C-Star-W-Star

30

您可以停止\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之后插入普通的分页符。(注意:尽管我认为应该可以,但是我不知道这是否会干扰引用和页面编号。)


1
谢谢!当您有多个包含加引用并且您不希望为它们提供新页面时,此答案将非常有效。只需使最后一组包括一个和书目部分,而不再是空白。
曼努埃尔·费雷里亚

2
曼努埃尔是对的:\begingroup\let\clearpage\relax ...\endgroup如果您希望书目与文字位于同一页面上,则可以在任何喜欢的地方使用技巧-停止在特定部分或部分之间的分页符,等等
约翰·

1
该解决方案似乎给我带来了一些参考问题。在包含两个枚举列表的包含文件中,对第二个列表的项目的引用不起作用。我不知道为什么会这样,但是改用newclude解决了这个问题。
Mike Shulman

1
我建议不要使用这种方法。它将产生超出其解决范围的更多问题(假设它首先解决了一些问题):参见tex.stackexchange.com/a/185237/4427
egreg

2

谢谢你,剑桥

使用\ include代替\ input,并使用\ includeonly命令选择要处理的部分


2
这不是最好的建议。\include{...]\input{...}实际的命令适合这些情况时,为什么要使用该作业?
弗洛里安·克莱因

1
这个答案似乎根本无法回答问题。(尽管它可能是有用的建议,但具有很好的参考意义。)
jciloa

这不能回答问题。
EL_DON
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.