@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
{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

@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
{.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

@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben 👣
@content
`main.tex` → `part1.tex`
`./part1.tex`
Der **einfache Punkt »`.`«** bezieht sich bei relativen Pfaden auf den aktuellen Ordner (hier: `latex`). Er ist optional, es könnte also auch nur `part1.tex` geschrieben werden.
@preview

@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben 👣
@content
`main.tex` → `part1.tex` (in einem Unterordner)
`./sections/part1.tex`
@preview

@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben 👣
@content
`main.tex` → `part1.tex` (aus einem Unterordner in einen anderen)
`../sections/part1.tex`
**Zwei Punkte »`..`«** bezeichnen den Elternordner des aktuellen Ordners (hier: `latex`, den Elternordner des Ordners `main`).
Leerzeichen in Dateipfaden müssen durch einen Backslash markiert werden: `pfad/zu/einer\␣datei`.
@preview

@slide(layout=content-only)
@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.
@slide(layout=content-and-preview)
@title
Präambel auslagern
@content
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.
@preview
{.thin-padding}
@slide(layout=content-only-with-category)
@category
Demo
@title
Größere Projekte kompilieren
@content
* Von nun an kompilieren wir die Datei `main.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.tex` im Wurzelverzeichnis. Wie binden wir hier die einzelnen Abschnitte ein?