私は複数の章からなる本を執筆しており、各章を別々のファイルに分割しました。序文には次のように書いています。
\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
。