我正在写一本包含多个章节的书,我将每个章节拆分为单独的文件。在我的序言中,我有以下内容:
\include{chap1}
\include{chap2}
...
文件chap1.tex
:
\chapter{Chapter text - Number 1}
Text text text
和类似的chap2.tex
(以及所有其他章节文件)。这按预期工作。
但是,我最近想,与其将它们\chapter{}
放在章节文件中,不如将它们移到序言中,只将内容保留在章节文件中。就像这样:
\chapter{Chapter text - Number 1}
\include{chap1}
\chapter{Number 2}
\include{chap2}
等等。然而,结果并不像预期的那样。我得到了一个章节标题(预期),但页面的其余部分完全是空白的。我必须翻页才能看到章节内容。
\chapter{}
预期结果与我在章节文件中看到的完全相同。
\chapter{}
为什么我拆分章节内容时会出现空白页?
答案1
我们texdef -t latex \include
发现:
\include: macro:#1->\relax \ifnum \@auxout =\@partaux \@latex@error {\string \include \space cannot be nested}\@eha \else \@include #1 \fi
我们还可以找到\@include
。因此,从texdef -t latex \@include
我们可以找到:
\@include: macro:#1 ->\clearpage \if@filesw \immediate \write \@mainaux {\string \@input {#1.aux}}\fi \@tempswatrue \if@partsw \@tempswafalse \edef \reserved@b {#1}\@for \reserved@a :=\@partlist \do {\ifx \reserved@a \reserved@b \@tempswatrue \fi }\fi \if@tempswa \let \@auxout \@partaux \if@filesw \immediate \openout \@partaux #1.aux \immediate \write \@partaux {\relax }\fi \@input@ {#1.tex}\clearpage \@writeckpt {#1}\if@filesw \immediate \closeout \@partaux \fi \else \deadcycles \z@ \@nameuse {cp@#1}\fi \let \@auxout \@mainaux
并且最开始显示macro:#1 ->\clearpage
,也就是说,第一个命令是\clearpage
。
这就是为什么\include{file.tex}
在插入内容之前清除页面的原因file.tex
。
为了完整起见,让我们看看:texdef -t latex \clearpage
\clearpage: macro:->\ifvmode \ifnum \@dbltopnum =\m@ne \ifdim \pagetotal <\topskip \hbox {}\fi \fi \fi \newpage \write \m@ne {}\vbox {}\penalty -\@Mi
我们在哪里找到\newpage
。
作为给读者的练习,检查texdef -t latex \newpage
。另外,将上面的内容与 进行比较texdef -t latex \input
。