Estou escrevendo um livro com vários capítulos e dividi cada capítulo em arquivos separados. No meu preâmbulo, tenho isto:
\include{chap1}
\include{chap2}
...
Arquivo chap1.tex
:
\chapter{Chapter text - Number 1}
Text text text
e semelhante para chap2.tex
(e todos os outros arquivos de capítulo). Isso funciona conforme o esperado.
No entanto, recentemente pensei que, em vez de ter \chapter{}
nos arquivos dos capítulos, iria movê-los para o preâmbulo e manter apenas o conteúdo nos arquivos dos capítulos. Assim:
\chapter{Chapter text - Number 1}
\include{chap1}
\chapter{Number 2}
\include{chap2}
e assim por diante. Porém, o resultado disso não foi o esperado. Recebo um título de capítulo (esperado), mas o resto da página está completamente em branco. Tenho que virar a página para chegar ao conteúdo do capítulo.
Os resultados esperados foram exatamente os mesmos que se eu tivesse \chapter{}
dentro dos arquivos dos capítulos.
Por que aparece a página em branco se eu dividir \chapter{}
o conteúdo do capítulo?
Responder1
De texdef -t latex \include
encontramos:
\include: macro:#1->\relax \ifnum \@auxout =\@partaux \@latex@error {\string \include \space cannot be nested}\@eha \else \@include #1 \fi
onde também podemos encontrar \@include
. Então, texdef -t latex \@include
encontramos:
\@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
e logo no início mostra macro:#1 ->\clearpage
, ou seja, o primeiro comando é \clearpage
.
É por isso que \include{file.tex}
limpa a página antes de inserir o conteúdo de file.tex
.
Para completar, vamos ver: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
onde encontramos \newpage
.
Como exercício para o leitor, confira texdef -t latex \newpage
. Além disso, compare o acima com texdef -t latex \input
.