我用combine
类将一些 LaTeX 文件捆绑在一起。
主文件基本上是这样的:
\documentclass{combine}
\begin{document}
\begin{papers}
\import{file1}
\import{file2}
\end{papers}
\end{document}
典型的包含文件占用不到一页文本,但最终每个文件都在一页上,因为合并似乎在每个文件后都放置了一个分页符。我该如何避免这些分页符?
答案1
\import
,就像标准 latex\include
要求每个导入的文档都从新页面开始一样。但是,如果您的文档太小,您可能只需使用\input
并输入文档(只需要文档主体,而无需序言)。如果您需要单独处理文档以及一起处理文档,您可以做各种事情,很难说没有看到示例,但例如,如果每个小文档都是doc1.tex
,doc2.tex
etx 和doc
.tex` 看起来像
\documentclass{article}
\usepackage{a,b,c}
\begin{document}
\input{doc1-body}
\end{document}
哪里doc1-body,tex
stuff...
然后您的合并文档可以
\documentclass{article}
\usepackage{a,b,c}
\begin{document}
\input{doc1-body}
\input{doc2-body}
\input{doc3-body}
\input{doc4-body}
\end{document}
或者可能在每个文档之间添加章节标题,或者任何您需要的内容……
答案2
软件包文档的第 9 页combine
明确指出
为了确保导入文档中的所有材料都排版,
\clearpage
导入文档的 中有一个内置命令\end{document}
。因此,\import
命令之后的任何材料都将从新页面开始。
答案3
如果你想要放在同一个文档中的文件都有一个共同的序言,那么你可以使用文档通关来实现这一点。然后,include 和 input 命令将按预期运行,只使用公共前言。如果编译了单个文档,它们将按预期工作。当组合时,则只使用单个公共前言。(正式地,包含的(用于分页符)/输入的(包含而不分页符)文件前言必须是主文档前言的子列表。我的意思是列表而不是集合,因为 \usepackage 的顺序可能很重要。)
我用它来准备教学大纲,我有大约 30 份独立文档,我将它们合并到 4-6 门课程的教学大纲中。这使我能够在教学大纲发布之前以及在学期期间快速编辑和修改单个文档,因为必须进行更改。
答案4
下面的“黑客”似乎有效......除了它显然在开头添加了导入文档的类名。
\documentclass{combine}
\makeatletter
\renewcommand{\c@laenddocument}{%
\@enddocumenthook \@checkend{document}%
%\clearpage
\begingroup \if@filesw
\immediate\closeout\@mainaux \immediate\closeout\@partaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef \@tempswafalse
\makeatletter \input\c@lmainauxfile %% change here \fi
\c@lenddoca
\@refundefined \endgroup \deadcycles\z@\@@end}
\renewcommand{\c@lbenddocument}{%
\@enddocumenthook
\@checkend{document}%
%\clearpage
\begingroup \if@filesw
\immediate\closeout\@partaux
\let\@setckpt\@gobbletwo
\let\@newl@bel\@testdef
\@tempswafalse \makeatletter \input\c@lauxfile
\fi \c@lenddoca
\endgroup \deadcycles\z@
\c@lclosetocs}
\makeatother
\begin{document}
\begin{papers}
\import{test1}\newline
\import{test2}
\end{papers}
\end{document}