182 lines
5.0 KiB
Markdown

<div class="layout-content-only">
<div class="layout-content">
<h1>Projektstruktur</h1>
</div>
</div>
---
<div class="layout-content-only">
<div class="layout-content">
<h2>Zielsetzung</h2>
<p>Ein größeres LaTeX-Projekt anlegen und dabei …</p>
<ul>
<li>… verhindern, dass LaTeX-Dokumente zu monströser Größe anwachsen 👹</li>
<li>… den Überblick über die Struktur eines Projekts behalten</li>
</ul>
</div>
</div>
---
<div class="layout layout-content-and-preview">
<div class="layout-content">
<h2 class="layout-title">Hauptdatei 👑</h2>
<ul>
<li>enthält Grundgerüst, Titelei, etc. </li>
<li>bindet einzelne Kapitel ein mit
<ul>
<li><code>\input{filename.tex}</code> oder</li>
<li><code>\include{filename}</code></li>
</ul>
</li>
</ul>
<pre class="lang-tex hljs" data-sourcefile="main.tex"><code>\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
\maketitle
\tableofcontents
\input{abschnitt1.tex}
\input{abschnitt2.tex}
\end{document}</code></pre>
</div>
<div class="layout-preview">
![](sections/german/04/projekt_dokument.png)
</div>
---
<div class="layout-content-and-preview">
<div class="layout-content">
<h2>Datei mit Teilabschnitt</h2>
<ul>
<li>enthält **keine Präambel**<li>
<li>enthält **kein** `\begin{document}` und `\end{document`</li>
</ul>
<pre data-source="abschnitt1.tex" class="hljs lang-tex"><code>\section{Dies ist Abschnitt1}
Hier ein Absatz zum
Inhalt von Abschnitt 1.</code></pre>
</div>
<div class="layout-preview">
![](sections/german/04/projekt_dokument.png)
</div>
</div>
---
<div class="layout-content-only">
<div class="layout-content">
<h2>Resultierende Projektstruktur</h2>
![](sections/german/04/main_und_unterdateien.png)
</div>
</div>
---
<div class="layout-content-only">
<div class="layout-content">
<h2>Resultierendes Dokument</h2>
![](sections/german/04/projekt_dokument.png)
</div>
</div>
---
<div class="two-columns">
<div class="column">
`\input{filename.tex}`
<ul class="fragment">
<li>Dateiendung .tex angeben</li>
<li>Schachtelung möglich: Unterdateien können wiederum per `\input{}` andere Unterunterdateien einbinden</li>
<li>Unterdatei wird im fertigen Dokument ohne Sprung auf neue Seite in Hauptdatei eingefügt</li>
</ul>
</div>
<div class="column">
`\include{filename}`
<ul class="fragment">
<li>Dateiendung .tex **nicht** angeben</li>
<li>Schachtelung nicht möglich</li>
<li>für jede Unterdatei wird im fertigen Dokument eine neue Seite angelegt</li>
</ul>
</div>
</div>
---
## EXKURS: Dateipfade angeben 👣
* wichtig für \input{}` und \include{}` sowie später für das Einbinden von Bildern
* Datei- und Ordnerstruktur = Baumstruktur
![](sections/german/04/ordnerbaum.png)
---
### Absolute Dateipfade
* Pfad von der Wurzel des Ordnerbaums bis zur jeweiligen Datei
* die verschiedenen Ebenen des Baums werden dabei durch folgende Zeichen getrennt:
* / (Unix, Mac)
* \ (Windows)
---
#### Beispiel
![](sections/german/04/pfad_absolut.png)
---
### Relative Dateipfade
* Pfad von einem bestimmten Ort irgendwo im Ordnerbaum bis zur jeweiligen Datei
* kürzer + weniger Schreibarbeit! :)
* bei \input{}`und \include{}` muss z.B. der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden
---
#### Beispiel
![](sections/german/04/pfad_relativ_gleicher_ordner.png)
Der einfache Punkt referiert bei relativen Pfaden auf den Ordner in dem die Datei liegt, im Verhältnis zu welcher der Pfad angegeben werden soll (hier: LaTeX-Tut).
---
![](sections/german/04/pfad_relativ_unterordner.png)
---
![](sections/german/04/pfad_relativ_elternordner.png)
Zwei Punkte referieren auf den Elternordner des Ordners, in dem die Datei liegt, im Verhältnis zu welcher der Pfad angegeben werden soll (hier: Dokumente, der Elternordner von LaTeX-Tut).
---
## Ende des Exkurses
---
## 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
---
## Kompilieren des Projekts
* die Unterdateiten können wegen ihrer fehlenden Präambel nicht selbstständig kompiliert werden
* aber geschickter Trick bei \include{}`: \includeonly{file1,file2,...}` in die Präambel schreiben, um nur einzelne Unterdateien zu kompilieren
---
## Was denkt ihr passiert, wenn wir den Header in eine Unterdatei auslagern?
### Wird das Gesamtdokument kompilieren oder nicht?
---
### Ja, es kompiliert!
Ein einfacher weg, um die Hauptdatei noch übersichtlicher zu halten.
![](sections/german/04/main_und_unterdateien_inkl_header.png)