latex-wochenende/slides/basic-documents.de.md
2025-05-01 21:46:40 +02:00

450 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@slide(layout=chapter-slide)
@number
2
@title
Einfache Dokumente
@slide(layout=wide-content)
@title
Befehle
@content
Allgemeiner Aufbau eine Befehls:
``` {.hljs .lang-txt}
\<befehl>[<optionale_parameter>]{<obligatorische_parameter>}
```
++ Ein paar Beispiele:
``` {.lang-tex .tex .hljs .fragment}
\newpage % fügt eine neue Seite ein
\textbf{fetter Text} % schreibt den übergebenen Text fett
\documentclass[a4paper,12pt,landscape]{article} % konfiguriert die Dokumentenklasse
\frac{1}{4} % fügt den mathematischen Bruch ein
```
@slide(layout=content-only)
@title
Backslash
@content
Den Backslash erzeugt ihr auf deutschen Tastaturen mit folgender Tastenkombination:
<kbd>AltGr</kbd>&nbsp;+&nbsp;<kbd>ß</kbd>&nbsp;(Windows/Linux)
<kbd>Alt</kbd>&nbsp;+&nbsp;<kbd>Shift</kbd>&nbsp;+&nbsp;<kbd>7</kbd>&nbsp;(MacOS)
@slide(layout=content-and-preview)
@title
Präambel & Dokumentumgebung
@content
<p style="text-indent: -1.3em"><span class="emoji">👁</span> Ein mit LaTeX gesetztes Dokument besteht aus:</p>
* **Präambel:** globale Einstellungen (Dokumentklasse, Kodierung, Sprache, Seitenformat, zusäzliche Pakete, …) und
* **Dokumentumgebung:** Inhalt des Dokuments.
``` {.lang-tex .hljs .fragment}
\documentclass[ngerman]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\begin{document}
Hallo, Welt!
\end{document}
```
@preview
![](svg/chapter-03/hallo-crop.svg)
@slide(layout=wide-content)
@title
Dokumentenklasse
@content
``` {.lang-tex .hljs}
\documentclass[<parameter>]{<dokumentklasse>}
```
Konkret zum Beispiel
``` {.lang-tex .hljs}
\documentclass[10pt,a5paper,landscape]{article}
```
@slide(layout=content-only)
@title
Kodierung
@content
``` {.lang-tex .hljs}
\usepackage[utf8]{inputenc}
\usepackage[t1]{fontenc}
```
* Die Zeichenkodierung bestimmt, welche Zeichen verfügbar sind.
* **ASCII** enthält kaum Sonderzeichen wie deutsche Umlaute.
* **UTF-8** ist eine universelle Kodierung.
@slide(layout=content-only)
@title
Sprache
@content
``` {.lang-tex .hljs}
\usepackage[ngerman]{babel}
```
* Das Paket **`babel`** stellt sprachspezifische Informationen (z.&thinsp;B. Silbentrennung, Sonderzeichen, Wechsel zwischen Fonts, Übersetzung von Labels wie Kapitel, Inhaltsverzeichnis oder Abbildung) bereit.
* **`ngerman`** steht für die neue deutsche Rechtschreibung.
@slide(layout=content-and-preview)
@title
Fließtext
@content
``` {.lang-tex .hljs}
Fließtext kann direkt in den Quelltext ↲
geschrieben werden. ↲
Einfache Zeilenumbrüche ↲
werden dabei ignoriert, ↲
genau wie mehrere Leerzeichen. ↲
Leerzeilen erzeugen einen neuen Absatz,↲
standardmäßig mit Einzug. ↲
Manuelle Zeilenumbrüche können mit ↲
zwei Backslashes erzwungen werden, ↲
haben in Fließtext aber eigentlich \\ ↲
nichts verloren.
```
@preview
![](svg/chapter-03/absätze-crop.svg)
@slide(layout=content-and-preview)
@title
Kommentare
@content
Nach einem Prozentzeichen wird der Rest der Zeile vom Compiler ignoriert. Der Kommentartext erscheint also nicht im fertigen Dokument.
``` {.lang-tex .hljs}
% Beginn Steckbrief
Name: Donald Knuth \\
Geburtsdatum: \\ % TODO: einfügen
Geburtsort: Milwaukee, Wisconsin
% Ende Steckbrief
```
Tastenkombinationen: <kbd>Strg</kbd> + <kbd>T</kbd> und <kbd>Strg</kbd> + <kbd>U</kbd>
@preview
![](svg/chapter-03/kommentare-crop.svg)
@slide(layout=content-and-preview-with-category)
@category
Achtung!
@title
Reservierte Zeichen
@content
Bestimmte Zeichen lösen in LaTeX Dinge aus:
`# $ % ^ & _ { } ~ \`
``` {.lang-tex .hljs}
50% sind die Hälfte.
```
Lösung: »`\`« voranstellen:
``` {.lang-tex .hljs}
50\% sind die Hälfte.
```
Funktioniert nicht mit »`\\`«, nutzt `\textbackslash` stattdessen.
++ Für später: Zwischen Zahlen und Einheiten passen schmale Leerzeichen (`50\,\%`).
@preview
![](svg/chapter-03/reservierte-zeichen-crop.svg)
@slide(layout=content-and-preview)
@title
Abschnitte und Kapitel
@content
Texte werden durch Überschriften in Abschnitte und Kapitel unterteilt. Immer verfügbar:
``` {.lang-tex .hljs}
\section{Ebene 1}
\subsection{Ebene 2}
\subsubsection{Ebene 3}
\paragraph{Ebene 4}
\subparagraph{Ebene 5}
```
Je nach Dokumentenklasse zusätzlich:
``` {.lang-tex .hljs}
\chapter{Kapitel}
\part{Teil}
```
@preview
![](svg/chapter-03/abschnitte-crop.svg)
@slide(layout=wide-content)
@title
Titelei
@content
``` {.lang-tex .hljs data-source=title.tex}
\title{Die Welt der Trüffel}
\author{Fooboar Rüssel \and Fachschaft WIAI}
\date{\today}
\begin{document}
\maketitle
\end{document}
```
* In der Präambel werden die Werte für die Einträge gespeichert.
* Das Setzen des Titels erfolgt in der Dokumentumgebung mit dem Befehl `\maketitle`.
* Die genaue Gestaltung hängt ab von der verwendeten Dokumentklasse.
* Mehrere Autoren werden mit `\and` verbunden.
* Wird kein Datum angegeben, wird per default das aktuelle Datum gesetzt. Ein abweichendes Datum kann mit `\date{}` definiert werden.
@slide(layout=content-and-preview)
@title
Titelei
@content
``` {.lang-tex .hljs data-source=title.tex}
\documentclass[ngerman]{scrartcl}
\usepackage{babel}
\title{Die Welt der Trüffel}
\author{Fooboar Rüssel \and
Fachschaft WIAI}
\date{\today}
\begin{document}
\maketitle
\section{Trüffelsuche}
\subsection{Suche mit Schwein}
\subsection{Suche ohne Schwein}
Wer macht denn sowas?
\section{Trüffelrezepte}
Mein Lieblingsrezept
\end{document}
```
@preview
![](svg/chapter-03/titel-orig.svg)
@slide(layout=content-only)
@title
Verzeichnisse
@content
``` {.lang-tex .hljs}
\tableofcontents % Inhaltsverzeichnis
\listoffigures % Abbildungsverzeichnis
\listoftables % Tabellenverzeichnis
```
* Nummerierung erfolgt automatisch
* Elemente, die nicht im Verzeichnis aufgeführt werden sollen, werden mit einem »`*`« versehen, also z.&thinsp;B. `\section*{}`.
* **am besten zweimal kompilieren**
@slide(layout=content-and-preview)
@title
Inhaltsverzeichnis
@content
``` {.lang-tex .hljs data-source=title.tex}
\documentclass[ngerman]{article}
\usepackage{babel}
\begin{document}
\tableofcontents
\section{Trüffelsuche}
Der erste Abschnitt.
\subsection{Suche mit Schwein}
Ein Unterabschnitt.
\subsection{Suche ohne Schwein}
Ein weiterer Unterabschitt.
\subsubsection[But why?]{Wer macht
denn sowas?}
Unter-Unterabschnitt.
\section{Trüffelrezepte}
Mein Lieblingsrezept
\end{document}
```
@preview
![](svg/chapter-03/inhalt-crop.svg)
@slide(layout=wide-task)
@task-number
2
@title
Dokument und Text gliedern
@content
* Öffnet die Datei `document-structure.tex`, die im Ordner `exercises/basic-document-structure` liegt.
* Packt den gesamten Text in der Datei in eine **Document**-Umgebung und schreibt darüber folgende **Präambel**.
``` {.lang-tex .hljs .fragment}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
```
* Öffnet mittels Rechtsklick auf die Datei das Kontextmenü und setzt die Datei als explizites Root-Dokument. Kompiliert sie anschließend.
* Wie ihr sehen könnt, sind in der Datei die Absätze im Dokument mit `\\` erstellt worden. Ersetzt diese durch richtige Absätze.
* Zeit für etwas Struktur! Verwendet für die **Überschriften** die passenden LaTeX-Befehle (`\section` u.&thinsp;ä.).
* Fügt anschließend ein **Inhaltsverzeichnis** in euer Dokument ein.
@slide(layout=extra-wide-content)
@title
Dokumentenklassen
@content
* Natürlich gibt es auch andere Dokumentenklassen als `article`.
* Je nachdem, welche Dokumentenklasse man verwendet, ändert sich das Layout der generierten PDF.
* Die korrekt geschriebenen Dokumentenklassen richten sich nach US-amerikanischen Layout-Normen.
* **`scr`**-Dokumentenklassen versuchen europäische Normen abzubilden.
Folgende Dokumentenklassen stehen zur Verfügung:
* **`scrartcl`, `article`** für kurze Dokumente
* **`scrreprt`, `report`** für lange Dokumente
* **`scrbook`, `book`** für Bücher
* **`beamer`** für Präsentationen
@slide(layout=extra-wide-content)
@title
Sprachen
@content
Es können auch mehrere Sprachen im Dokument verwendet werden:
``` {.lang-tex .hljs}
\usepackage[ngerman, swedish, ukrainian, greek, english]{babel}
```
Umschalten zwischen Sprachen:
``` {.lang-tex .hljs}
\selectlanguage{<sprache a>}
\selectlanguage{<sprache b>}
```
Eingebetteter Text in anderer Sprache:
``` {.lang-tex .hljs}
\selectlanguage{<sprache a>}
\foreignlanguage{<sprache b>}{Hier steht Text in Sprache B in einem Text in Sprache A}
```
@slide(layout=extra-content-and-preview)
@title
Sprachen ein Beispiel
@content
``` {.lang-tex .hljs}
\today
\selectlanguage{ngerman}
\today
\selectlanguage{swedish}
\today
\selectlanguage{ukrainian}
\today
\selectlanguage{greek}
\today
\selectlanguage{english}
\today
```
@preview
![](svg/chapter-03/languages-crop.svg)
@slide(layout=extra-content-and-preview)
@title
Überschriften und das Inhaltsverzeichnis
@content
Mit Sternchen fallen bei allen diesen Befehlen die Nummerierung und der Eintrag im Inhaltsverzeichnis weg:
``` {.lang-tex .hljs}
\section*{Kein Verzeichniseintrag}
```
Außerdem kann für das Inhaltsverzeichnis ein alternativer Titel angegeben werden:
``` {.lang-tex .hljs}
\section[Titel im Verzeichnis]
{Kapitelüberschrift}
```
@preview
![](svg/chapter-03/abschnitte-anders-crop.svg)
@slide(layout=content-only)
@title
Bevor wir fortfahren können …
@content
::: {.box .warning}
**Kommentiert** zuletzt die Präambel, die Dokumentenumgebung und das Inhaltsverzeichnis **wieder aus**.
Nur so kann eure Lösung auch ins Skript eingebunden werden (Schnelles Auskommentieren kann in TeXstudio mit dem Shortcut <kbd>Strg</kbd> + <kbd>T</kbd> erreicht werden).
:::
Im nächsten Kapitel erklären wir, warum das notwendig ist.