@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 👹 * 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}` 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 👣 @content * wichtig für `\input{}` und `\include{}` sowie später für das Einbinden von Bildern * Datei- und Ordnerstruktur = Baumstruktur 🌳 @preview  @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @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: »`\`«
Absoluter Pfad zu `main.tex`
* Unix: `/home/knut/docs/latex/main.tex` * Windows: `C:\knut\docs\latex\main.tex`Bei LaTeX muss stets die **Unix-Syntax** für Pfadangaben verwendet werden. Deshalb werden wir im Folgenden diese verwerden.
@preview  @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content ### Relative Dateipfade * Pfad von einem bestimmten Ort irgendwo im Ordnerbaum bis zur jeweiligen Datei * kürzer + weniger Schreibarbeit! ☺ * bei `\input{}` und `\include{}` kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werdenRelativer Pfad \ von `main.tex` zu `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.Relativer Pfad von `main.tex` zu `part1.tex` in Unterordner
`./sections/part1.tex` @preview  @slide(layout=content-and-preview-with-category) @category Exkurs @title Dateipfade angeben 👣 @content ### Relative DateipfadeRelativer Pfad von `main.tex` in eigenem Unterordner zu `part1.tex` in anderem Unterordner
`../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}`.