latex-wochenende/slides/chapter-04.de.md
2020-06-11 12:17:21 +02:00

268 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@slide(layout=chapter-slide)
@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 <span class="emoji">👹</span>
* den Überblick über die Struktur eines Projekts behalten
@preview
![](svg/chapter-04/langes-dokument.png){style="padding: .2em; height: 100vh"}
@slide(layout=content-and-preview)
@title
Hauptdatei <span class="emoji">👑</span>
@content
* enthält Grundgerüst, Titel, Inhaltsverzeichnis etc.
* bindet einzelne Kapitel ein mit \
`\input{pfad/zur/datei}` oder `\include{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=two-columns)
@title
`input` oder `include`?
@column-one
``` {.hljs .lang-tex}
\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
@column-two
``` {.hljs .lang-tex}
\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 (vorher muss mindestens einmal das gesamte Projekt kompiliert werden)
@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben <span class="emoji">👣</span>
@content
* wichtig für `\input{}` und `\include{}` sowie später für das Einbinden von Bildern
* Datei- und Ordnerstruktur = Baumstruktur <span class="emoji">🌳</span>
@preview
![](svg/chapter-04/tree-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben <span class="emoji">👣</span>
@content
### 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: »`\`«
<p data-category="Beispiel">Absoluter Pfad zu `main.tex`</p>
* Unix: `/home/knut/docs/latex/main.tex`
* Windows: `C:\knut\docs\latex\main.tex`
<p data-category="Achtung!">Bei LaTeX muss stets die **Unix-Syntax** für Pfadangaben verwendet werden. Deshalb werden wir im Folgenden diese verwerden.</p>
@preview
![](svg/chapter-04/absolute-path-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben <span class="emoji">👣</span>
@content
### Relative Dateipfade
* Pfad von einem bestimmten Ort irgendwo im Ordnerbaum bis zur jeweiligen Datei
* kürzer + weniger Schreibarbeit! <span class="emoji"></span>
* bei `\input{}` und `\include{}` kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden
<div class="fragment">
<p data-category="Beispiel">Relativer Pfad \
von `main.tex` zu `part1.tex`</p>
`./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.
</div>
@preview
![](svg/chapter-04/relative-path-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben <span class="emoji">👣</span>
@content
### Relative Dateipfade
<p data-category="Beispiel">Relativer Pfad von `main.tex` zu `part1.tex` in Unterordner</p>
`./sections/part1.tex`
@preview
![](svg/chapter-04/relative-path-subdir-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Exkurs
@title
Dateipfade angeben <span class="emoji">👣</span>
@content
### Relative Dateipfade
<p data-category="Beispiel">Relativer Pfad von `main.tex` in eigenem Unterordner zu `part1.tex` in anderem Unterordner</p>
`../sections/part1.tex`
**Zwei Punkte »`..`«** bezeichnen den Elternordner des aktuellen Ordners (hier: `latex`, den Elternordner des Ordners `main`).
@preview
![](svg/chapter-04/relative-path-superdir-crop.svg)
@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
![](svg/chapter-04/main-parts-präambel-crop.svg){.thin-padding}
@slide(layout=task)
@task-number
3
@title
Ein strukturiertes Projekt
@content
* 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.
@slide(layout=task)
@task-number
3
@title
Ein strukturiertes Projekt
@content
* 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}`.