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