為什麼 \chapter + \include 會產生空白頁?

為什麼 \chapter + \include 會產生空白頁?

我正在寫一本包含多個章節的書,並且我已將每一章拆分為單獨的文件。在我的序言中,我有這樣的內容:

\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

相關內容