Почему \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.

Связанный контент