latex-wochenende/slides/project-structure.de.md
2025-05-14 20:10:31 +02:00

6.1 KiB
Raw Permalink Blame History

@slide(layout=chapter-slide)

@number 3

@title Komplexere Projekte

@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}
\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}
\section{Dies ist Abschnitt 1}
Hier ein Absatz zum
Inhalt von Abschnitt 1.

% …
\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-exercises.tex` → `praeamble.tex`

::: {.fragment} ./praeamle.tex

Der einfache Punkt ».« bezieht sich bei relativen Pfaden auf den aktuellen Ordner (hier: latex-script). Er ist optional, es könnte also auch nur praeamble.tex geschrieben werden. :::

@preview

@slide(layout=content-and-preview-with-category)

@category Exkurs

@title Dateipfade angeben 👣

@content

`main-exercises.tex` → `basic-document-structure.tex` (in einem Unterordner)

::: {.fragment} ./content/basic-document-structure.tex :::

@preview

@slide(layout=content-and-preview-with-category)

@category Exkurs

@title Dateipfade angeben 👣

@content

`basic-functionality.tex` → `graphics.raw.tex`

(wenn basic-functionality.tex von main-exercises.tex importiert wird)

::: {.fragment} ./exercises/graphics/graphics.raw.tex

Pfade sind immer relativ zum Wurzelelement, auch wenn dieses noch andere Dateien einbindet, die wiederum andere Dateien referenzieren.

:::

@preview

@slide(layout=content-only-with-category)

@category Demo

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

@task-number 3

@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-exercises.tex im Wurzelverzeichnis. Wie binden wir hier die einzelnen Abschnitte ein?

@slide(layout=extra-content-only)

@title PDF-Dokumente einbetten

@content Das Paket pdfpages erlaubt das Einbetten ganzer PDF-Dokumente.

\includepdf[pages={<from>-<to>}]{<file>}

Weitere Parameter lassen mehrere Seiten in Kacheln nebeneinander erscheinen oder ändern die Ausrichtung zu Querformat. Die Paket-Dokumentation enthält eine abschließende Liste aller Möglichkeiten.

@slide(layout=extra-wide-content)

@title Makros

@content Manchmal ist es nützlich, oft genutzten Codes durch Makros zu vereinfachen.

\newcommand{\<name>}[<parameter_count>][<default>]{<content>}

Im Skript haben wir solche Makros unter anderem verwendet, um Abstände und Akronyme zu definieren (siehe commands.tex für weitere Beispiele):

\newcommand{\widefiguremargin}{-.22\textwidth}
\newcommand{\acro}[1]{\textsc{\lowercase{#1}}}

Es ist auch möglich, bestehende Befehle anzupassen. \LaTeX erlaubt es sogar, Programmierkonstrukte wie Variablen, Verzweigungen und Schleifen zu nutzen. Für weitere Einblicke dient dieses Kapitel des WikiBooks.

@slide(layout=content-only)

@title Hinweis

@content

  • Von nun an kompilieren wir die Datei main-exercises.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.