10 KiB
Raw Blame History

Projektstruktur


Zielsetzung

Ein größeres LaTeX-Projekt anlegen und dabei …

  • verhindern, dass LaTeX-Dokumente zu monströser Größe anwachsen 👹
  • den Überblick über die Struktur eines Projekts behalten

Hauptdatei 👑

  • enthält Grundgerüst, Titel, Inhaltsverzeichnis etc.
  • bindet einzelne Kapitel ein mit
    \input{path_to_file} oder \include{path_to_file}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\title{Ein Titel}
\begin{document}
    \maketitle
    \tableofcontents
    \input{abschnitt1.tex}
    \input{abschnitt2.tex}
\end{document}

Datei mit Teilabschnitt

  • enthält **keine Präambel**
  • enthält **kein** `\begin{document}` und `\end{document}`
\section{Dies ist Abschnitt 1}
Hier ein Absatz zum
Inhalt von Abschnitt 1.

% …

\section{Dies ist Abschnitt 2}
Hier ein Absatz zum
Inhalt von Abschnitt 2.

% …


`input` oder `include`?

\input{path_to_file}
  • Dateiendung `.tex` **kann** angegeben werden
  • **Schachtelung** möglich: Unterdateien können wiederum per `\input{}` andere Unterunterdateien einbinden
  • Unterdatei wird im fertigen Dokument **ohne Sprung auf neue Seite** in Hauptdatei eingefügt
\include{path_to_file}
  • Dateiendung `.tex` **nicht** angeben
  • **Schachtelung** nicht möglich
  • für jede Unterdatei wird im fertigen Dokument eine **neue Seite** angelegt
  • Vorteil bei größeren Projekten: `\includeonly{file1,file2,...}` in die Präambel schreiben, um nur einzelne Unterdateien zu kompilieren

Dateipfade angeben 👣

  • wichtig für `\input{}` und `\include{}` sowie später für das Einbinden von Bildern
  • Datei- und Ordnerstruktur = Baumstruktur 🌳

Dateipfade angeben 👣

Absolute Dateipfade

  • Pfad von der Wurzel des Ordnerbaums bis zur jeweiligen Datei
  • die verschiedenen Ebenen des Baums werden dabei durch folgende Zeichen getrennt:
    • Unter Unix: »`/`«
    • Unter Windows: »`\`«

Beispiel: Absoluter Pfad zu `main.tex`

  • Unix: `/home/knut/docs/latex/main.tex`
  • Windows: `C:\knut\docs\latex\main.tex`

Allerdings muss **bei LaTeX stets die Unix-Syntax** für Pfadangaben verwendet werden. Deshalb werden wir im folgenden diese verwerden.


Dateipfade angeben 👣

Relative Dateipfade

  • Pfad von einem bestimmten Ort irgendwo im Ordnerbaum bis zur jeweiligen Datei
  • kürzer + weniger Schreibarbeit!
  • bei `\input{}`und `\include{}` kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden

Beispiel: Relativer Pfad
von `main.tex` zu `part1.tex`

`./part1.tex`

Der **einfache Punkt ».«** bezieht sich bei relativen Pfaden auf den Ordner, in dem die Ausgangsdatei liegt (hier: `latex`). Er ist optional, es könnte also auch nur part1.tex geschrieben werden.


Dateipfade angeben 👣

Relative Dateipfade

Beispiel: Relativer Pfad von `main.tex` zu `part1.tex` in Unterordner

`./sections/part1.tex`


Dateipfade angeben 👣

Relative Dateipfade

Beispiel: Relativer Pfad von `main.tex` in eigenem Unterordner zu `part1.tex` in anderem Unterordner

`../sections/part1.tex`

**Zwei Punkte »`..`«** bezeichnen den Elternordner des aktuellen Ordners (hier: latex, den Elternordner des Ordners main).


Kompilieren des Projekts

  • **Nur die Hauptdatei** wird kompiliert, um das fertige PDF-Dokument zu erhalten.
  • Fehlermeldungen enthalten dann Verweis, in welcher Unterdatei sie aufgetreten sind.
  • Die Unterdateien können wegen ihrer fehlenden Präambel nicht selbstständig kompiliert werden.

Präambel ausgelagert

Was denkt ihr, passiert, wenn wir die Präambel in eine Unterdatei auslagern?

Wird das Gesamtdokument kompilieren oder nicht?

Ja, es kompiliert!
Ein einfacher Weg, um die Hauptdatei noch übersichtlicher zu halten.


Ein strukturiertes Projekt

  • Entfernt die Präambel, die beiden `document`-Zeilen und das Inhaltsverzeichnis aus `allgemeines.tex`.
  • Kompiliert stattdessen `l2kurz.tex` das ist ab sofort unsere **Hauptdatei**. Die Datei `allgemeines.tex` ist bereits eingebunden und wird mit kompiliert.
  • Die Hauptdatei ist sehr unübersichtlich. Lagert alle Befehle, die vor der Dokumentumgebung (`\begin{document}`) aufgerufen werden, in eine neue Datei `praeambel.tex` aus und bindet diese mit `\input{praeambel}` ein.
  • Technischer Hinweis: Wählt beim Kompilieren bitte die Option »(c) nutze das vorgegebene Kommando«, wenn sich ein entsprechendes Pop-up öffnet.

Ein strukturiertes Projekt

  • Um lange Kompilierzeiten zu verhindern, sollten vorerst nur noch die Abschnitte einleitung.tex und allgemeines.tex eingebunden werden.
  • Ersetzt hierzu in der Datei l2kurz.tex alle anderen \input-Statements durch \include-Statements und verwendet den Befehl \includeonly.
  • Achtung: Die Präambel sollte weiterhin durch \input eingebunden werden.
  • Setzt das \includeonly-Statement direkt über \begin{document}.