\include Wiki .:. goLaTeX - Mein LaTeX-Forum


goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum

goLaTeX.de - Wiki
 


\include

Der Befehl \include fügt eine Datei an einer bestimmten Stelle des Quelltextes ein. Die eingefügte Datei wird als normaler Teil des Quelltextes mitverarbeitet und sollte daher ebenfalls aus einer Folge von LaTeX-Befehlen bestehen, jedoch ohne Vorspann und ohne \begin{document}…\end{document}.

Im Gegensatz zum \input-Befehl, wird bei Verwendung des Befehls \include ein Seitenvorschub vor und nach der eingelesenen Datei erzeugt. Er sollte deshalb auch nur für Material verwendet werden, das eine oder mehrere eigene Seiten in der Ausgabe erzeugen soll. Es ist nicht sinnvoll den Befehl in der Dokumentpräambel also vor \begin{document} zu verwenden.

Dieser Befeht kann nicht verschachelt werden. Wenn man ein Kapitel via \include{einleitung} einbindet, so darf nur mit \input weiter aufgeteilt werden.

Dafür kann das Einfügen via \includeonly gesteuert werden.

Inhaltsverzeichnis

[bearbeiten] Verwendung

Syntax:
\include{DATEI}
\includeonly{DATEILISTE}

DATEI - steht für die Angabe des Dateipfades zu der gewünschten Datei. Bei dieser Angabe muss die Endung .tex weggelassen werden. Diese wird beim Verarbeiten automatisch ergänzt. Bei der Pfadangabe gelten die gleichen Bestimmungen wie unter Linux. Die Angaben sind immer relativ zum Ort der Datei in welcher der Pfad eingeben wird.

DATEILISTE - hat den Aufbau DATEI,DATEI,DATEI,... Die Angabe der Anweisung \includeonly ist für die Verwendung von \include optional. Ist eine Anweisung \includeonly vorhanden, so werden beim LaTeX-Lauf nur die Dateien per \include geladen, die in der DATEILISTE angegeben sind. Für alle anderen \include-Anweisungen wird lediglich der unten erklärte Eintrag in der Haupt-aux-Datei vorgenommen. Weder wird die tex-Datei eingelesen, noch wird die Unter-aux-Datei neu geschrieben. Ist keine \includeonly-Anweisung vorhanden, so werden alle \include-Anweisungen behandelt als wäre die entsprechende Datei in der DATEILISTE.

[bearbeiten] Arbeitsweise

Während die Anweisung \input die angegebene Datei einfach nur einliest, passiert bei \include im Hintergrund weit mehr. Zunächst wird die aktuelle Seite beendet. Dann wird in die Haupt-aux-Datei eine Anweisung geschrieben, um eine Unter-aux-Datei DATEI.aux einzulesen. Anschließend wird diese Unter-aux-Datei neu angelegt. Erst dann wird DATEI.tex eingelesen. Nach dem Einlesen von DATEI.tex wird ebenfalls die aktuelle Seite beendet. In der Unter-aux-Datei werden zum Schluss Zählerstände wie die aktuelle Seitennummer und Gliederungsnummer abgelegt, damit bei späteren LaTeX-Läufen mit geänderter \includeonly-Anweisung ein korrekt nummeriertes Dokument erzeugt werden kann.

Dieses Schreiben der Zählerstände ist auch der Hauptgrund dafür, dass \include am Anfang und Ende immer eine neue Seite beginnt. Darüber hinaus muss \include diverse Einträge in die Haupt-aux-Datei und die Unter-aux-Datei synchron erledigen. Dies wiederum kann zu Problemen führen, wenn man unmittelbar vor einer \include-Anweisung eine asynchrone Schreibanweisung wie \addcontentsline oder \addtocontents verwenden. Diese wird dann eventuell zu spät ausgeführt. Da dabei dann auch nicht in die Unter-aux-Datei, sondern in die Haupt-aux-Datei geschrieben wird, kann sie ihre Wirkung erst nach dem Einlesen der Unter-aux-Datei entfalten. So findet sich im Beispiel
\begin{filecontents}{abschnitt.tex}
\section{Test}
\end{filecontents}
\documentclass{article}
 
\begin{document}
\tableofcontents
\clearpage
 
\addcontentsline{toc}{section}{Vor Test}% Funktioniert nicht wie erwartet!
\include{abschnitt}
\section{Nach Test}
\end{document}
im Inhaltsverzeichnis der Eintrag "Vor Test" beispielsweise nach dem Eintrag "Test". In solchen Fällen ist die asynchrone Schreibanweisung in die eingeladene Datei zu verschieben:
\begin{filecontents}{abschnittmitzusatz.tex}

\addcontentsline{toc}{section}{Vor Test} \section{Test} \end{filecontents} \documentclass{article}   \begin{document} \tableofcontents \clearpage   \include{abschnittmitzusatz} \section{Nach Test}

\end{document}

Damit arbeitet \addcontentsline zwar noch immer asynchron schreibt aber in die Unter-aux-Datei und nicht mehr in die Haupt-aux-Datei. Damit wird stimmt die Verarbeitungs- und die Ausführungsreihenfolge wieder überein.

Die Unter-aux-Datei kann auch selbst zu einem Problem werden. Da sie den Namen DATEI.aux trägt, wird sie normalerweise im Verzeichnis von DATEI.tex angelegt und beim nächsten LaTeX-Lauf auch dort gesucht. Besteht im Verzeichnis von DATEI.tex kein Schreibrecht, so schlägt das Anlegen der Unter-aux-Datei fehl. Dieser Fehler wird dann auch gemeldet. Die meisten modernen TeX-Systeme sind aus Sicherheitsgründe in der Voreinstellung außerdem so konfiguriert, dass nur in das aktuelle Verzeichnis und Unterverzeichnisse des aktuellen Verzeichnisses geschrieben werden darf. In einem solchen Fall würde also
\include{../kapitel}% meist verboten!
zu einem Fehler führen.

[bearbeiten] Beispiele

Folgende Ordner Struktur sei gegeben.

Projektordner
D:\Dokumente\Latex\Diplomarbeit\

Inhalt
D:\Dokumente\Latex\Diplomarbeit\Kapitel1\
D:\Dokumente\Latex\Diplomarbeit\Kapitel2\
D:\Dokumente\Latex\Diplomarbeit\Bilder\
D:\Dokumente\Latex\Diplomarbeit\diplom.tex

Nun könnte in diplom.tex stehen.

\include{./Kapitel1/einleitung}
\include{./Kapitel1/aufgabenstellung}
\include{./Kapitel2/vorbereitung}

[bearbeiten] Verwandte Befehle

[bearbeiten] Links




Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2015 goLaTeX.de