@slide(layout=chapter-slide) @number 4 @title Projektstruktur @slide(layout=content-and-preview) @title Zielsetzung @content 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 @preview ![](svg/chapter-04/langes-dokument.jpg){style="padding: .2em; height: 100vh"} @slide(layout=content-and-preview) @title Hauptdatei 👑 @content * enthält Grundgerüst, Titel, Inhaltsverzeichnis etc. * bindet einzelne Kapitel ein mit \ `\input{pfad/zur/datei}` ``` {.lang-tex .hljs data-sourcefile=main.tex} \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} ``` @preview ![](svg/chapter-04/hauptdatei-orig.svg) @slide(layout=content-and-preview) @title Datei mit Teilabschnitt @content * enthält **keine Präambel** * enthält **kein** `\begin{document}` und `\end{document}` ``` {.hljs .lang-tex data-sourcefile=part1.tex} \section{Dies ist Abschnitt 1} Hier ein Absatz zum Inhalt von Abschnitt 1. % … ``` ``` {.hljs .lang-tex data-sourcefile=part2.tex} \section{Dies ist Abschnitt 2} Hier ein Absatz zum Inhalt von Abschnitt 2. % … ``` @preview ![](svg/chapter-04/hauptdatei-teile-crop.svg){.thin-padding} @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content * wichtig für `\input{}` sowie später für das Einbinden von Bildern und anderen Medien * Datei- und Ordnerstruktur = Baumstruktur 🌳 * bei `\input{}` kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden

Bei LaTeX muss stets die **Unix-Syntax** für Pfadangaben verwendet werden. Pfadelemente werden durch einen Schrägstrich getrennt: `pfad/zur/datei`. Deshalb werden wir im Folgenden diese Schreibweise verwenden.

@preview ![](svg/chapter-04/tree-crop.svg) @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content

`main-exercises.tex` → `praeamble.tex`

`./praeamle.tex` Der **einfache Punkt »`.`«** bezieht sich bei relativen Pfaden auf den aktuellen Ordner (hier: `latex-skript`). Er ist optional, es könnte also auch nur `praeamble.tex` geschrieben werden.
@preview ![](svg/chapter-04/relative-path-crop.svg) @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content

`main-exercises.tex` → `basic-document-structure.tex` (in einem Unterordner)

`./content/basic-document-structure.tex`
@preview ![](svg/chapter-04/relative-path-subdir-crop.svg) @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content

`basic-functionality.tex` → `graphics.raw.tex`

(wenn `basic-functionality.tex` von `main-exercises.tex` importiert wird)

./exercises/graphics/graphics.raw.tex

Pfade sind immer relativ zum Wurzelelement, auch wenn dieses noch andere Dateien einbindet, die wiederum andere Dateien referenzieren.

@preview ![](svg/chapter-04/relative-path-transitive-crop.svg) @slide(layout=content-only-with-category) @category Demo @title Kompilieren des Projekts @content * **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.
Von nun an kompilieren wir die Datei `main-exercises.tex` im Wurzelverzeichnis des Projektordners. Klickt hierzu in TeXstudio mit der rechten Maustaste auf die Datei und wählt **„Explizit als Root-Dokument setzen“**. Anschließend könnt ihr wie gewohnt kompilieren.
@slide(layout=task) @task-number 4 @title Ein strukturiertes Projekt @content Im Ordner `exercises/project-structure` findet ihr eine Datei namens `main.tex`. * Erstellt neue Dateien (z. B. `section1.tex` und `section2.tex` und verschiebt die Abschnitte in diese. * Importiert die Fragmente anschließend mit Hilfe des `\input`-Befehls. * Lagert die Präambel auf demselben Weg in eine eigene Datei aus. * Schaut euch abschließend die Gesamtstruktur unseres Projektarchivs an, beginnend mit `main-exercises.tex` im Wurzelverzeichnis. Wie binden wir hier die einzelnen Abschnitte ein?