How To: LaTeX

Willkommen zu unserem LaTeX Workshop! Hier erklären wir euch, wie ihr LaTeX benutzen könnt, um eure Abgaben in KDI, DBS und anderen Vorlesungen zu schreiben. Wir gehen dabei von der KDI-Vorlage aus, die ihr in den ersten Semestern vermutlich am meisten benutzen werdet.

Zu Anfang erklären wir euch, wie ihr die Vorlage in Overleaf einbinden könnt und geben euch eine Rundtour durch den Overleaf Editor. Anschließend gehen wir die Vorlage durch und erklären euch, wie ihr eure Abgaben in LaTeX schreiben könnt.

Wenn ihr statt Overleaf lieber einen lokalen Editor benutzen wollt und eure LaTeX Dokumente selbst kompilieren wollt, könnt ihr auch einfach die Vorlage herunterladen und in eurem Editor der Wahl öffnen.

Egal welchen Editor ihr zum kompilieren von euren LaTeX-Dateien benutzen wollt, müsst ihr überhaupt erstmal LaTeX auf eurem Rechner installieren. Dafür gibt es verschiedene Distributionen, die ihr benutzen könnt. Die bekanntesten sind TeX Live und MiKTeX. Wir empfehlen euch TeX Live, da es plattformunabhängig ist und alle Pakete enthält, die ihr für eure LaTeX-Dateien braucht.

1. Overleaf und die KDI-Vorlage

KDI-Vorlage

Wir benutzen die KDI-Vorlage, als Erklärungsbasis. Beachtet dabei, dass unsere Version der Vorlage vielleicht nicht mehr aktuell zur Vorlesung ist, sie wird euch aber einen guten Einstieg in LaTeX geben. (Falls die Vorlage tatsächlich Mal out-of-date sein sollte, könnt ihr uns gerne Bescheid geben, damit wir sie und dieses How-To aktualisieren können.)

1.1 Overleaf Projekt erstellen

Wenn ihr euch bei Overleaf registriert habt, werdet ihr bei der ersten Anmeldung vermutlich von Overleaf begrüßt und könnt direkt ein neues Projekt erstellen.

Overleaf Welcome

Falls das nicht euer erstes Mal bei Overleaf ist, könnt ihr auch einfach oben links auf New Project klicken und bekommt eine vergleichbare Auswahl.

Indem wir unter New Project auf Blank Project klicken, erstellen wir nach der Eingabe eines Projektnamens ein neues (quasi) leeres LaTeX Projekt:

Overleaf Hello World Project

1.2 Rundtour durch den Overleaf Editor

Der Overleaf Editor ist in verschiedene Bereiche unterteilt. Hier eine kurze Übersicht:

  • Dateibaum: Links seht ihr den Dateibaum, in dem ihr eure Dateien verwalten könnt.
    • Toolbar: In der zum Dateibaum gehörigen Toolbar habt ihr links drei Symbole für New File, New Folder und Upload und rechts zwei Symbole für Rename und Delete.
    • main.tex: Im Dateibaum selbst seht ihr die Datei main.tex, die aktuell geöffnet ist. Die aktuell ausgewählte Datei ist grün hinterlegt und hat rechts ein Symbol für ein Dateimenü (drei Punkte), wo die Datei umbenannt, gelöscht oder heruntergeladen werden kann.
    • File Outline: Unter dem Dateibaum seht ihr den File Outline, in dem ihr die Struktur eurer Datei sehen könnt.
  • Editor: In der Mitte seht ihr den Editor, in dem ihr eure LaTeX-Dateien schreiben könnt.
    • Toolbar: Über dem Editor gibt es eine Toolbar, in der ihr verschiedene Optionen für den Editor habt. Hier könnt ihr z.B. von dem Code Editor zum Visual Editor wechseln -- wir bleiben beim Code Editor.
  • Vorschau: Rechts seht ihr die Vorschau eures Dokuments.
    • Toolbar: Über der Vorschau gibt es eine Toolbar, in der ihr verschiedene Optionen für die Vorschau habt. Wenn ihr hier auf Recompile klickt, wird das derzeit ausgewählte Dokument neu kompiliert und die Vorschau aktualisiert.

1.3 Vorlage einfügen

Um die Vorlage in euer Projekt zu bekommen, könnt ihr einfach auf den Link oben klicken und die Datei herunterladen. Anschließend könnt ihr die Datei in euer Projekt hochladen. Dazu klickt ihr auf das Upload-Symbol oben links in der Toolbar vom Dateibaum, drückt auf Select Files und wählt die heruntergeladenenen Dateien aus.

Wichtig sind die folgenden Dateien:

  • kdiartcl.cls: Die LaTeX-Klasse, die das Aussehen des Dokuments definiert.
  • Foo.Bar.99.tex: Eine Beispieldatei, die die Klasse benutzt.

Overleaf Upload

Die alte main.tex könnt ihr löschen und stattdessen die Foo.Bar.99.tex öffnen. Drückt ihr jetzt auf Recompile, solltet ihr die Vorschau eures Dokuments sehen.

1.4 Rundtour durch die Vorlage

Die Vorlage ist selbst schon ein auskommentiertes Beispiel, wie ihr eure Abgaben in LaTeX gestalten könnt. Zu folgenden Aspekten eure Abgaben gibt es nochmal zusätzliches Material von uns:

2. Konstruktion von Abgaben

Bevor wir uns den Details eines LaTeX Dokumentes widmen, wollen wir euch erstmal nur erklären, wie ihr aus dieser Vorlage eine Abgabe für eine Vorlesung konstruieren könnt. Wir gehen deshalb erst in Abschnitt 3 auf die Rahmenbedingungen von LaTeX ein und werden in Abschnitt 2 erstmal nur auf die Aspekte von LaTeX eingehen, die unmittelbar mit der Vorlage und eurer Abgabe zu tun haben.

Eine Abgabe in KDI, DBS oder anderen Vorlesungen besteht typischerweise aus mehreren Teilen. Im Folgenden geben wir euch in jedem Unterkapitel eine Einführung in die Konstruktion eines anderen Teils eurer Abgabe.

2.1 Vorlesung und Semester

Die Vorlage beginnt mehr oder weniger mit der Definition der Universität, des Fachbereichs, der Vorlesung und des Semesters. Diese Informationen werdet ihr für eine Vorlesung vermutlich einmal am Anfang anpassen müssen und danach nie wieder anrühren.

\university{Universität Konstanz}
\institute{Fachbereich Informatik \& Informationswissenschaft}
\lecture{Konzepte der Informatik}
\semester{Wintersemester 2019/2020}

Tendenziell müsst ihr vermutlich nur lecture und semester anpassen, damit alles stimmt.

2.2 Titel, Datum, Autor und Übungsgruppe

Einige Rahmeninformationen zu eurer Abgabe werdet ihr für jede Abgabe anpassen müssen.

\group{1. PG} % Übungsgruppennummer, leer lassen falls nicht gewünscht
\author{A. Foo \and B. Bar} % EIGENE NAMEN mit \and getrennt
\title{Lösung des 99. Aufgabenblattes}
\subtitle{Deadline: Tag, Datum, Uhrzeit}
  • \group: Definiert die Übungsgruppe, in der ihr seid.
  • \author: Definiert die Autoren der Abgabe, d.h. dich und deine Gruppenmitglieder (mit \and getrennt).
  • \title: Definiert den Titel der Abgabe.
  • \subtitle: Definiert den Untertitel der Abgabe und wird im Beispiel für die Deadline benutzt.

2.3 Das Dokument ansich

Der Hauptteil eurer Abgabe wird in der document-Umgebung definiert. Hier könnt ihr eure Lösungen schreiben und die Struktur eurer Abgabe festlegen.

\begin{document}
\maketitle

...

\end{document}
  • \maketitle: Erzeugt den Titel der Abgabe, der aus den vorher definierten Informationen besteht. Ohne \maketitle wird kein Titel erzeugt.

2.3.1 Überschriften und Text

In LaTeX könnt ihr Überschriften mit \section, \subsection, \subsubsection und \paragraph definieren. Diese Überschriften werden automatisch nummeriert und in das Inhaltsverzeichnis aufgenommen.

\section{Aufgabe 1}
\subsection{Teilaufgabe a)}
\subsubsection{Teilaufgabe i)}
\paragraph{Teilaufgabe (i)}

Mit \textbf{} könnt ihr Text fett schreiben und mit \textit{} kursiv.

Deshalb \textbf{muss die Lösung so sein} also \textit{sozusagen}.

Mit \texttt{} könnt ihr Text in Schreibmaschinenschrift schreiben.

Nennen wir die Variable \texttt{foo}...

2.3.2 Aufzählungen

Es gibt verschiedene Arten von Aufzählungen in LaTeX. Hier die wichtigsten:

Unnummerierte Aufzählungen
\begin{itemize}
    \item Erster Punkt
    \item Zweiter Punkt
\end{itemize}
Nummerierte Aufzählungen

Mit \begin{enumerate} könnt ihr nummerierte Aufzählungen erstellen.

\begin{enumerate}
    \item Erster Punkt
    \item Zweiter Punkt
\end{enumerate}
Aufzählungen mit Beschreibungen

Mit \begin{description} könnt ihr Aufzählungen mit Beschreibungen erstellen.

\begin{description}
    \item[Erster Punkt] Beschreibung des ersten Punktes
    \item[Zweiter Punkt] Beschreibung des zweiten Punktes
\end{description}

2.3.3 Tabellen

In LaTeX könnt ihr Tabellen mit der tabular-Umgebung definieren. In einer Tabelle könnt ihr mit & die Spalten und mit \\ die Zeilen definieren.

\begin{tabular}{l|c|r}
    Links & Mitte & Rechts \\
    \hline
    1 & 2 & 3 \\
\end{tabular}
  • {l|c|r}: Definiert die Ausrichtung der Spalten. l steht für links, c für zentriert und r für rechts. Mit | könnt ihr vertikale Linien hinzufügen.
  • \hline: Fügt eine horizontale Linie ein.
  • &: Trennt die Spalten.
  • \\: Trennt die Zeilen.

In der Regel ist diese händische Art Tabellen zu erstellen sehr mühsam. Deshalb gibt es tolle Tools, wie den LaTeX Table Generator, die euch eine grafische Oberfläche bieten, um Tabellen zu erstellen und den entsprechenden LaTeX-Code zu generieren.

2.3.4 Bilder / Abbildungen

Für viele eurer Abgaben werdet ihr letztendlich auf Bilder zurückgreifen müssen, um Graphen, Automaten oder ähnliches zu visualisieren. In LaTeX könnt ihr Bilder mit \includegraphics einfügen.

\includegraphics[width=0.5\textwidth]{example-image-a.png}
  • [width=0.5\textwidth]: Definiert die Breite des Bildes. Hier wird das Bild auf die Hälfte der Textbreite skaliert. Spielt mit dem Wert herum, um das Bild auf eine passende Größe zu skalieren.
  • {example-image-a.png}: Definiert den Pfad zum Bild. Hier wird das Beispielbild example-image-a.png im selben Verzeichnis wie die LaTeX-Datei eingefügt.

Für eine schönere Einbindung in eure Abgabe könnt ihr auch die figure-Umgebung benutzen, die der Abbildung eine Nummer und eine Beschriftung hinzufügt.

\begin{figure}[H]
    \centering
    \includegraphics[width=0.5\textwidth]{example-image-a.png}
    \caption{Ein Beispielbild}
\end{figure}
  • [H]: Definiert, dass die Abbildung an genau dieser Stelle im Text eingefügt werden soll, anstatt z.B. an den Anfang oder das Ende einer Seite.
  • \centering: Zentriert das Bild.
  • \caption{Ein Beispielbild}: Definiert die Beschriftung des Bildes.

2.3.5 (Pseudo-)Code

In KDI und DBS werdet ihr vermutlich auch (Pseudo-)Code in eure Abgaben integrieren müssen. Dafür gibt es verschiedene Möglichkeiten.

Code

In LaTeX könnt ihr Code mit der lstlisting-Umgebung einfügen, die schon in der Vorlage eingebunden ist.

\begin{lstlisting}[language=SQL]
SELECT * FROM products
WHERE price > 100
AND category = 'Electronics'
ORDER BY price DESC;
\end{lstlisting}
  • [language=SQL]: Definiert die Sprache des Codes. Hier wird SQL definiert. Mit language=Java könnt ihr Java-Code einfügen, mit language=Python Python-Code, usw.

Für eine schönere Darstellung des Codes mit einer Beschreibung und einer automatischen Nummerierung des Codes, könnt ihr auch die Programmcode-Umgebung der KDI-Vorlage benutzen.

\begin{Programmcode}[H]
    \caption{How to write algorithms}

    \begin{lstlisting}[language=Python]
    def foo(bar):
        return bar
    \end{lstlisting}
\end{Programmcode}
  • [H]: Definiert, dass der Code an genau dieser Stelle im Text eingefügt werden soll, anstatt z.B. an den Anfang oder das Ende einer Seite.
  • \caption{How to write algorithms}: Definiert die Beschreibung des Codes.
Pseudocode

Für Pseudocode gibt es auch das Paket algorithm2e, das in der KDI Vorlage schon eingebunden ist. Mit diesem Paket könnt ihr Pseudocode in der algorithm-Umgebung schreiben.

\begin{algorithm}
    \KwData{this text}
    \KwResult{how to write algorithm with \LaTeX2e }
    initialization\;
    \While{not at end of this document}{
        read current\;
        \eIf{understand}{
            go to next section\;
            current section becomes this one\;
        }{
            go back to the beginning of current section\;
        }
    }
    \caption{How to write algorithms}
\end{algorithm}

Eine Übersicht über die wichtigsten Befehle des algorithm2e-Pakets findet ihr in der Dokumentation.

Für eine etwas schönere Darstellung mit einer Beschreibung und Nummerierung des Pseudocodes könnt ihr auch die von der Vorlage definierte Algorithmus-Umgebung benutzen.

\begin{Algorithmus}[H]
    \caption{How to write algorithms}

    \begin{algorithm}[H]
        \KwData{this text}
        \KwResult{how to write algorithm with \LaTeX2e }
        initialization\;
        \While{not at end of this document}{
            read current\;
            \eIf{understand}{
                go to next section\;
                current section becomes this one\;
            }{
                go back to the beginning of current section\;
            }
        }
    \end{algorithm}
\end{Algorithmus}
  • [H]: Definiert, dass der Algorithmus an genau dieser Stelle im Text eingefügt werden soll, anstatt z.B. an den Anfang oder das Ende einer Seite.
  • \caption{How to write algorithms}: Definiert die Beschreibung des Pseudocodes.

2.3.6 Mathematische Ausdrücke

In LaTeX könnt ihr mathematische Formeln auf sehr verschiedene Arten einfügen, die sich je nach Kontext und Komplexität eurer Ausdrücke verschieden gut eignen.

Inline Mathematik

Für einfache mathematische Ausdrücke innerhalb eines Textes könnt ihr die $-Zeichen benutzen.

$E = mc^2$
Mathematische Umgebungen

Falls ihr eure mathematischen Ausdrücke in einer eigenen Zeile haben wollt, könnt ihr die doppelten $-Zeichen benutzen.

$$
E = mc^2
$$

Für Umformungen eignet sich oft die align-Umgebung, die mehrzeilige mathematische Ausdrücke ermöglicht und die Einrückung der Gleichungen anhand des &-Zeichens automatisch anpasst.

\begin{align}
    E &= mc^2 \\
    m &= \frac{E}{c^2}
\end{align}

Ihr werdet auch feststellen, dass die align-Umgebung automatisch die Gleichungen nummeriert. Wenn ihr das nicht wollt, könnt ihr die align*-Umgebung benutzen.

Für komplexere mathematische Ausdrücke gibt es noch viele weitere Umgebungen, die ihr benutzen könnt. Eine gute Übersicht findet ihr in der LaTeX Wikibook.

3. Allgemeines zu LaTeX

LaTeX ist ein Textsatzsystem, das sich besonders für wissenschaftliche Dokumente eignet. Es ermöglicht euch mit etwas Arbeit sehr professionell aussehende Dokumente zu erstellen und das auf jedem beliebigen Computersystem auf die gleiche Art und Weise.

3.1 Struktur von LaTeX-Dokumenten

Ein LaTeX-Dokument besteht aus zwei Teilen: Dem Präambel und dem Dokument selbst.

3.1.1 Präambel

Die Präambel ist der Bereich des Dokuments, in dem ihr die Einstellungen für das gesamte Dokument festlegt. Hier könnt ihr z.B. die Dokumentenklasse, die Sprache, die Schriftart, die Seitenränder, die Kopf- und Fußzeilen, die Nummerierung, die Zitierweise, die Bibliographie, usw. festlegen.

\documentclass{article}
\usepackage[utf8]{inputenc}

\title{How To: LaTeX}
\author{Fachschaft Informatik}
\date{\today}

3.1.2 Dokument

Der Dokumententeil ist der Bereich des Dokuments, in dem ihr den eigentlichen Inhalt eures Dokuments schreibt. Hier könnt ihr eure Überschriften, Texte, Tabellen, Bilder, Code, usw. schreiben.

\begin{document}
\maketitle

\section{Einleitung}
Hier kommt der Text.

\end{document}

3.2 Befehle und Umgebungen

In LaTeX gibt es zwei Arten von Befehlen: Befehle und Umgebungen.

3.2.1 Befehle

Befehle in LaTeX fangen immer mit einem Backslash \ an und können verschiedene Argumente haben. Einige Befehle haben keine Argumente, wie z.B. \today, das das aktuelle Datum ausgibt.

\title{How To: LaTeX}
\author{Fachschaft Informatik}
\date{\today}

3.2.2 Umgebungen

Umgebungen in LaTeX fangen immer mit \begin{} an und enden mit \end{}. Sie können ebenfalls verschiedene Argumente haben. Einige Umgebungen haben keine Argumente, wie z.B. die document-Umgebung, die den Hauptteil des Dokuments definiert.

\begin{document}
...
\end{document}

3.3 Kommentare

Kommentare in LaTeX fangen immer mit einem Prozentzeichen % an und gehen bis zum Ende der Zeile. Kommentare werden von LaTeX ignoriert und sind nur für euch sichtbar.

% Das ist ein Kommentar
\title{How To: LaTeX}

3.4 Leerzeichen

In LaTeX werden mehrere Leerzeichen zu einem Leerzeichen zusammengefasst. Ein Zeilenumbruch wird als Leerzeichen interpretiert. Wenn ihr also mehrere Leerzeichen oder Zeilenumbrüche in eurem LaTeX-Code habt, wird das von LaTeX ignoriert.

3.5 Sonderzeichen

In LaTeX gibt es einige Sonderzeichen, die eine spezielle Bedeutung haben und deshalb nicht direkt benutzt werden können. Dazu gehören z.B. das Prozentzeichen %, das Dollarzeichen $, das Unterstrichzeichen _, das Doppelkreuz #, das geschweifte Klammern {} und das Tilden ~. Wenn ihr diese Zeichen benutzen wollt, müsst ihr sie mit einem Backslash \ escapen.

\% \$ \_ \# \{ \} \~

3.6 Pakete

Es existieren sehr viele Pakete, die zusätzliche Funktionalitäten bereitstellen. Ein Paket wird mit dem Befehl \usepackage{} eingebunden.

Zum Beispiel gibt euch die graphicx-Umgebung die Möglichkeit, Bilder in eure Dokumente einzufügen.

\usepackage{graphicx}

Ein weiteres hilfreiches Paket ist inputenc, das euch erlaubt, Umlaute direkt in eurem LaTeX-Code zu benutzen.

\usepackage[utf8]{inputenc} % definiert den Zeichensatz, den ihr benutzen wollt

4. Genug des Guten

LaTeX ist ein sehr mächtiges Werkzeug, das euch noch weit mehr bietet als das, was wir euch hier gezeigt haben. Es gibt viele weitere Befehle, Umgebungen und Pakete, die ihr benutzen könnt, um eure Dokumente zu gestalten. Hier eine Liste von weiteren Ressourcen, die euch weiterhelfen können:

Und eine Liste von Hilfsmitteln, die euch das LaTeXen erleichtern können:

Dieses How-To wird sich hoffentlich noch etwas füllen, aber für den Anfang sollte es reichen. Wenn ihr Fragen habt, könnt ihr uns gerne kontaktieren oder in der Fachschaft vorbeikommen. Wir helfen euch immer gerne weiter!

Viel Spaß beim LaTeXen! 🎉