Я пишу книгу из нескольких глав, и я разбил каждую главу на отдельные файлы. В моей преамбуле это:
\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
.