251 lines
10 KiB
Markdown
251 lines
10 KiB
Markdown
<div class="layout-content-only">
|
||
<div class="layout-content">
|
||
<h1>Projektstruktur</h1>
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2>Zielsetzung</h2>
|
||
<p>Ein größeres LaTeX-Projekt anlegen und dabei …</p>
|
||
<ul>
|
||
<li>verhindern, dass LaTeX-Dokumente zu monströser Größe anwachsen <span class="emoji">👹</span></li>
|
||
<li>den Überblick über die Struktur eines Projekts behalten</li>
|
||
</ul>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/langes-dokument.png" style="padding: .2em; height: 100vh">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2>Hauptdatei <span class="emoji">👑</span></h2>
|
||
<ul>
|
||
<li>enthält Grundgerüst, Titel, Inhaltsverzeichnis etc.</li>
|
||
<li>bindet einzelne Kapitel ein mit<br>
|
||
<code>\input{path_to_file}</code> oder <code>\include{path_to_file}</code></li>
|
||
</ul>
|
||
<pre class="lang-tex hljs" data-sourcefile="main.tex"><code>\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}</code></pre>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/main-orig.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2>Datei mit Teilabschnitt</h2>
|
||
<ul>
|
||
<li>enthält **keine Präambel**<li>
|
||
<li>enthält **kein** `\begin{document}` und `\end{document}`</li>
|
||
</ul>
|
||
<pre data-sourcefile="part1.tex" class="hljs lang-tex"><code>\section{Dies ist Abschnitt 1}
|
||
Hier ein Absatz zum
|
||
Inhalt von Abschnitt 1.
|
||
|
||
% …</code></pre>
|
||
<pre data-sourcefile="part2.tex" class="hljs lang-tex"><code>\section{Dies ist Abschnitt 2}
|
||
Hier ein Absatz zum
|
||
Inhalt von Abschnitt 2.
|
||
|
||
% …</code></pre>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img class="thin-padding" src="sections/german/04/main-parts-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-two-columns">
|
||
<div class="layout-title">
|
||
<h2>`input` oder `include`?</h2>
|
||
</div>
|
||
<div class="layout-column-one">
|
||
<pre class="lang-tex jshl"><code>\input{path_to_file}</code></pre>
|
||
<ul class="fragment">
|
||
<li>Dateiendung `.tex` **kann** angegeben werden</li>
|
||
<li>**Schachtelung** möglich: Unterdateien können wiederum per `\input{}` andere Unterunterdateien einbinden</li>
|
||
<li>Unterdatei wird im fertigen Dokument **ohne Sprung auf neue Seite** in Hauptdatei eingefügt</li>
|
||
</ul>
|
||
</div>
|
||
<div class="layout-column-two">
|
||
<pre class="lang-tex jshl"><code>\include{path_to_file}</code></pre>
|
||
<ul class="fragment">
|
||
<li>Dateiendung `.tex` **nicht** angeben</li>
|
||
<li>**Schachtelung** nicht möglich</li>
|
||
<li>für jede Unterdatei wird im fertigen Dokument eine **neue Seite** angelegt</li>
|
||
<li>Vorteil bei größeren Projekten: `\includeonly{file1,file2,...}` in die Präambel schreiben, um nur einzelne Unterdateien zu kompilieren</li>
|
||
<li>um `\includeonly` zu verwenden, muss zuvor mindestens einmal das gesamte Projekt kompiliert werden</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2 data-category="Exkurs">Dateipfade angeben <span class="emoji">👣</span></h2>
|
||
<ul>
|
||
<li>wichtig für `\input{}` und `\include{}` sowie später für das Einbinden von Bildern</li>
|
||
<li>Datei- und Ordnerstruktur = Baumstruktur <span class="emoji">🌳</span></li>
|
||
</ul>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/tree-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2 data-category="Exkurs">Dateipfade angeben <span class="emoji">👣</span></h2>
|
||
<h3>Absolute Dateipfade</h3>
|
||
<ul>
|
||
<li>Pfad von der Wurzel des Ordnerbaums bis zur jeweiligen Datei</li>
|
||
<li>die verschiedenen Ebenen des Baums werden dabei durch folgende Zeichen getrennt:
|
||
<ul>
|
||
<li>Unter Unix: »`/`«</li>
|
||
<li>Unter Windows: »`\`«</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<div class="fragment">
|
||
<p><strong>Beispiel:</strong> Absoluter Pfad zu `main.tex`</p>
|
||
<ul>
|
||
<li>Unix: `/home/knut/docs/latex/main.tex`</li>
|
||
<li>Windows: `C:\knut\docs\latex\main.tex`</li>
|
||
</ul>
|
||
<p>Allerdings muss **bei LaTeX stets die Unix-Syntax** für Pfadangaben verwendet werden. Deshalb werden wir im folgenden diese verwerden.</p>
|
||
</div>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/absolute-path-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2 data-category="Exkurs">Dateipfade angeben <span class="emoji">👣</span></h2>
|
||
<h3>Relative Dateipfade</h3>
|
||
<ul>
|
||
<li>Pfad von einem bestimmten Ort irgendwo im Ordnerbaum bis zur jeweiligen Datei</li>
|
||
<li>kürzer + weniger Schreibarbeit! <span class="emoji">☺</span></li>
|
||
<li>bei `\input{}`und `\include{}` kann der Pfad zu einer Unterdatei relativ zur Hauptdatei angeben werden</li>
|
||
</ul>
|
||
<div class="fragment">
|
||
<p><strong>Beispiel:</strong> Relativer Pfad <br/>von `main.tex` zu `part1.tex`</p>
|
||
<p>`./part1.tex`</p>
|
||
<p>Der **einfache Punkt ».«** bezieht sich bei relativen Pfaden auf den Ordner, in dem die Ausgangsdatei liegt (hier: `latex`). Er ist optional, es könnte also auch nur part1.tex geschrieben werden.</p>
|
||
</div>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/relative-path-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2 data-category="Exkurs">Dateipfade angeben <span class="emoji">👣</span></h2>
|
||
<h3>Relative Dateipfade</h3>
|
||
<p><strong>Beispiel:</strong> Relativer Pfad von `main.tex` zu `part1.tex` in Unterordner</p>
|
||
<p>`./sections/part1.tex`</p>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/relative-path-subdir-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2 data-category="Exkurs">Dateipfade angeben <span class="emoji">👣</span></h2>
|
||
<h3>Relative Dateipfade</h3>
|
||
<p><strong>Beispiel:</strong> Relativer Pfad von `main.tex` in eigenem Unterordner zu `part1.tex` in anderem Unterordner</p>
|
||
<p>`../sections/part1.tex`</p>
|
||
<p>**Zwei Punkte »`..`«** bezeichnen den Elternordner des aktuellen Ordners (hier: <code>latex</code>, den Elternordner des Ordners <code>main</code>).</p>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img src="sections/german/04/relative-path-superdir-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-only">
|
||
<div class="layout-content">
|
||
<h2>Kompilieren des Projekts</h2>
|
||
<ul>
|
||
<li>**Nur die Hauptdatei** wird kompiliert, um das fertige PDF-Dokument zu erhalten.</li>
|
||
<li>Fehlermeldungen enthalten dann Verweis, in welcher Unterdatei sie aufgetreten sind.</li>
|
||
<li>Die Unterdateien können wegen ihrer fehlenden Präambel nicht selbstständig kompiliert werden.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-and-preview">
|
||
<div class="layout-content">
|
||
<h2>Präambel ausgelagert</h2>
|
||
<p>Was denkt ihr, passiert, wenn wir die Präambel in eine Unterdatei auslagern?</p>
|
||
<p>Wird das Gesamtdokument kompilieren oder nicht?</p>
|
||
<p class="fragment"><strong>Ja, es kompiliert!</strong><br>
|
||
Ein einfacher Weg, um die Hauptdatei noch übersichtlicher zu halten.</p>
|
||
</div>
|
||
<div class="layout-preview">
|
||
<img class="thin-padding" src="sections/german/04/main-parts-header-crop.svg">
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-only">
|
||
<div class="layout-content">
|
||
<h2 data-category="Aufgabe" data-task="3">Ein strukturiertes Projekt</h2>
|
||
<ul>
|
||
<li>Entfernt die Präambel, die beiden `document`-Zeilen und das Inhaltsverzeichnis aus `allgemeines.tex`.</li>
|
||
<li class="fragment">Kompiliert stattdessen `l2kurz.tex` – das ist ab sofort unsere **Hauptdatei**. Die Datei `allgemeines.tex` ist bereits eingebunden und wird mit kompiliert.</li>
|
||
<li class="fragment">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.</li>
|
||
<li class="fragment"><strong>Technischer Hinweis:</strong> Wählt beim Kompilieren bitte die Option »(c) nutze das vorgegebene Kommando«, wenn sich ein entsprechendes Pop-up öffnet.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
---
|
||
|
||
<div class="layout-content-only">
|
||
<div class="layout-content">
|
||
<h2 data-category="Aufgabe" data-task="3">Ein strukturiertes Projekt</h2>
|
||
<ul>
|
||
<li>Um lange Kompilierzeiten zu verhindern, sollten vorerst nur noch die Abschnitte <code>einleitung.tex</code> und <code>allgemeines.tex</code> eingebunden werden.</li>
|
||
<li class="fragment">Ersetzt hierzu in der Datei <code>l2kurz.tex</code> alle <strong>anderen</strong> <code>\input</code>-Statements durch <code>\include</code>-Statements und verwendet den Befehl <code>\includeonly</code>.</li>
|
||
<li class="fragment"><strong>Achtung:</strong> Die Präambel sollte weiterhin durch <code>\input</code> eingebunden werden.</li>
|
||
<li class="fragment">Setzt das <code>\includeonly</code>-Statement direkt über <code>\begin{document}</code>.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|