268 lines
6.8 KiB
Markdown
268 lines
6.8 KiB
Markdown
@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
|
||
{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
|
||

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

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

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

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

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

|
||
|
||
|
||
@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=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}`.
|
||
|