Ich schreibe ein Buch mit mehreren Kapiteln und habe jedes Kapitel in separate Dateien aufgeteilt. In meiner Einleitung steht Folgendes:
\include{chap1}
\include{chap2}
...
Datei chap1.tex
:
\chapter{Chapter text - Number 1}
Text text text
und ähnliches für chap2.tex
(und alle anderen Kapiteldateien). Dies funktioniert wie erwartet.
Ich habe mir jedoch kürzlich überlegt, dass ich diese anstelle \chapter{}
der Kapiteldateien in die Präambel verschiebe und den Inhalt einfach in den Kapiteldateien lasse. Und zwar so:
\chapter{Chapter text - Number 1}
\include{chap1}
\chapter{Number 2}
\include{chap2}
und so weiter. Das Ergebnis war jedoch nicht wie erwartet. Ich bekomme eine Kapitelüberschrift (wie erwartet), aber der Rest der Seite ist völlig leer. Ich muss umblättern, um zum Kapitelinhalt zu gelangen.
Die erwarteten Ergebnisse waren genau dieselben, als ob ich sie \chapter{}
in den Kapiteldateien gehabt hätte.
Warum erscheint eine leere Seite, wenn ich \chapter{}
den Kapitelinhalt aufteile?
Antwort1
Daraus texdef -t latex \include
ergibt sich:
\include: macro:#1->\relax \ifnum \@auxout =\@partaux \@latex@error {\string \include \space cannot be nested}\@eha \else \@include #1 \fi
wo wir auch finden können \@include
. Also texdef -t latex \@include
finden wir:
\@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
und ganz am Anfang steht macro:#1 ->\clearpage
, das heißt, der erste Befehl lautet \clearpage
.
Aus diesem Grund \include{file.tex}
wird die Seite gelöscht, bevor der Inhalt eingefügt wird file.tex
.
Der Vollständigkeit halber sehen wir uns Folgendes an: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
wo wir finden \newpage
.
Als Übung für den Leser: Überprüfen Sie texdef -t latex \newpage
. Vergleichen Sie außerdem das Obige mit texdef -t latex \input
.