6.1 KiB
@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}
@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.
% …
@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=task)
@task-number 3
@title Ein strukturiertes Projekt
@content ::: {.box .warning} Schließt alle offenen Tabs aus vorherigen Aufgaben. :::
Im Ordner exercises/project-structure findet ihr eine Datei namens main.tex.
- Erstellt neue Dateien (z. B.
section1.texundsection2.texund 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.texim 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-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.
@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.
:::
@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
:::
@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.
:::@slide(layout=content-only)
@title Hinweis
@content
- Von nun an kompilieren wir die Datei
main-exercises.texim 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.