¿Por qué \chapter + \include crea una página en blanco?

¿Por qué \chapter + \include crea una página en blanco?

Estoy escribiendo un libro con varios capítulos y he dividido cada capítulo en archivos separados. En mi preámbulo tengo esto:

\include{chap1}
\include{chap2}
...

Archivo chap1.tex:

\chapter{Chapter text - Number 1}
Text text text

y similares para chap2.tex(y todos los demás archivos de capítulos). Esto funciona como se esperaba.

Sin embargo, recientemente pensé que en lugar de tenerlos \chapter{}en los archivos de los capítulos, los movería al preámbulo y simplemente mantendría la sustancia en los archivos de los capítulos. Como esto:

\chapter{Chapter text - Number 1}
\include{chap1}

\chapter{Number 2}
\include{chap2}

etcétera. Sin embargo, el resultado de esto no fue el esperado. Recibo un título de capítulo (esperado), pero el resto de la página está completamente en blanco. Tengo que pasar página para llegar al contenido del capítulo.

Los resultados esperados fueron exactamente los mismos que si tuviera \chapter{}dentro de los archivos del capítulo.

¿Por qué aparece la página en blanco si divido \chapter{}el contenido del capítulo?

Respuesta1

De texdef -t latex \includeencontramos:

\include:
macro:#1->\relax \ifnum \@auxout =\@partaux \@latex@error {\string \include \space cannot be nested}\@eha \else \@include #1 \fi

donde también podemos encontrar \@include. Entonces, de texdef -t latex \@includeencontramos:

\@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

y el principio muestra macro:#1 ->\clearpage, es decir, el primer comando es \clearpage.

Es por eso que \include{file.tex}limpia la página antes de insertar el contenido de file.tex.

Para completar, veamos: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

donde encontramos \newpage.

Como ejercicio para el lector, consulte texdef -t latex \newpage. Además, compare lo anterior con texdef -t latex \input.

información relacionada