UP | HOME

PDFs Erstellen — eine Übersicht

Für manche Theorieabgaben wird es notwendig sein PDF Dateien zu erstellen, um diese im EST hochzuladen.

Für die meisten werden Umgebungen wie MS Word oder Libre Office Writer das bequemste sein, aber WYSIWYG (what you see is what you get) haben ihre Einschränkungen und Nachteile, sagen manche. Im Folgenden werden also nicht diese Arten von Word Prozessoren betrachtet, sondern (freie) Alternativen welche vielleicht eher für die Informatik zugeschnitten sind.

Es ist zunächst anzumerken das alle Befehle und Vorschläge in diesem Dokument für *nix Umgebungen gedacht sind. Auf Windows oder andere Betriebssysteme kann es sein das es einfachere Alternativen gibt oder das nicht alle Programme genau gleich laufen.

Ich habe nicht vor eine ausführliche Anleitung zu schreiben, sondern Ansätze und Referenzen anzubieten. Mithilfe dieser sollte man in der Lage sein das zu lernen und verstehen was man lernen und verstehen will.

LaTeX

LaTeX ist mit hoher Wahrscheinlichkeit die weit verbreitetste Software zum verfassen Wissenschaftlicher Texte. Viele eurer Vorlesungsfolien, Übungsblätter (bspw. Mathe, AuD) und Skripte werden hiermit gezaubert.

Jedes Jahr (Sommer und Wintersemester) gibt es einen LaTeX Kurs an der Uni (Naturwissenschaftliche Fakultät) den man auch besuchen kann.

Setup

Je nach Betriebsystem unterschiedet sich der Aufwand und die genauen Schritte.

Für Windows Nutzer empfiehlt es sich die MiKTeX Configuration zu benutzen, macOS hat MacTeX und die meisten Linux Distributionen/BSD Betriebssysteme benutzen TeX Live. Dieses sollte einfach mit dem jeweiligen Packetmanager machbar sein (siehe Anmerkungen für Debian (ie. auch Ubuntu, Mint, …) Fedora oder Arch).

Erste Schritte

Ein LaTeX Dokument kann beispielsweise so Aussehen:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,margin=2.5cm]{geometry}
\usepackage{amsmath}

\title{Monads: Monoids in the Category of Endofunctors}
\author{Alyssa P. Hacker}

\begin{document}
\maketitle

\section{Introduction}
\label{sec:intro}

In abstract algebra, a branch of mathematics, a \textit{monoid} is an
algebraic structure\footnote{See Wikipedia} with a single associative
binary operation and an identity element.

% etc. mit \subsection{...}, \subsubsection{...}, usw.

\end{document}

Neben Prosa, finden sich verschiedene Befehle der Form \funktion[optionales_argument=wert]{notwendiges argument}. LaTeX versteht noch zusätzlich "Blöcke" die mit \begin{env} und \end{env} abgetrennt werden.

Meist hat ein LaTeX Dokument die Folgende Struktur:

\documentclass
gibt an was für eine Art von PDF generiert werden soll (eg. Buch, Kurztext, Präsentation, …).
\usepackage × n
LaTeX lässt sich mit "packeten" erweiterten, was es oft einfacher (oder erst möglich macht) Sachen darzustellen. Mehr Details werden im Abschnitt Übersicht wichtiger Pakete gegeben.
Weitere Präambel Befehle
Bevor man mit dem Schreiben anfängt, darf man noch zusätzliche Informationen angeben. Diese können von den verwendeten Paketen abhängen
\begin{document} bis \end{document}
Hier kommt der eigentliche Inhalt rein. Normaler Text wird normal eingegeben, nur wenn zusätzliche Änderungen (eg. fettschrift mit \textbf{...} oder Fußnoten mit \footnote{...}) benötigt werden, braucht es LaTeX/TeX befehle.

Für allgemeine Abgaben empfiehlt es an das Beispiel von oben zu halten. Mehr sollte nicht notwendig sein, ist aber natürlich gern gesehen ;).

Wer Zeit hat kann German version of A Short Introduction to LaTeX2ε lesen. Wenn man kurz sein Gedächtnis auffrischen muss, eignet sich das LaTeX Wikibook oder ein Cheet Sheet.Eine Vielzahl an weiteren Büchern sind in der Uni Bibliothek zu finden.

Mathematische Eingaben

Donald Knuth, der Erfinder von TeX (unteranderem), schrieb TeX in den 1970'er Jahren für eine neue Ausgabe seines Buchs The Art of Computer Programming, da für ihn die typographische Qualität, insbesondere das der mathematischen Formeln der vorherigen Ausgabe "unzufriedenstellend" war. TeX sollte also eine für Mathematiker und Informatiker intuitive Syntax besitzen, die bis heute eines der populärsten Darstellungsformen von Mathematischer Aussagen sind (Wikipedia und selbst Word verstehen LaTeX-artige eingaben).

Die Grundsätze von mathematischer Eingabe sind einfach:

  1. "Inline" (dh. Sonderzeichen die in einer Zeile verwendet werden, eg. α, \(2^n\), …) werden mit Zwei $-Zeichen abgetrennt (alternativ \( ... \)).
  2. Alle anderen Formeln stehen auf einer eigenen Zeile, und erlauben es sich mehr Platz zu nehmen. Diese werden bspw mit \[ ... \] oder \begin{equation} ...\end{equation} eingeführt.

Mathematische Symbole (hier eine längere Liste) werden entweder direkt eingegeben (wie Zahlen: 1, 3.141, -256; Einfache Symbole =, +, -) oder als eine Art Befehl gesehen. Wichtige Beispiele sind:

Griechische Buchstaben
\alpha → α, \Xi → Ξ
Hochsatz und Tiefsatz
Mit einem ^ oder _ lässt sich jeweils höher- oder tiefer gestellter Text darstellen (bspw für Indizes \(x_n\) oder Potenzen \(2^8\)) hilfreich.
Brüche und Wurzeln
Hierzu gibt es gesonderte Befehle: \frac{a}{b} produziert ein Bruch mit a als Zähler und b als Nenner. \sqrt[n]{x} stellt die n'te Wurzel von x da.

Mehr zu mathematischer Eingabe in LaTeX kann man hier oder hier (nicht alle Tipps funktionieren da diese Seite eigentlich für Quora geschrieben ist) lesen.

Übersicht wichtiger Pakete und Extentions

graphicx
Zum einfügen von Bildern (.png, .jpg, …) in ein Dokument. Einfach in der Prelude \usepackage{graphicx} erwähnen, und dann an der gewünschten Stelle \includegraphics{dateiname} schreiben. dateiname sollte dabei im gleichen Verzeichnis sein wie die .tex Datei.
tikz (Benutzeranleitung)
Für Vektorgraphiken (bspw. alle Graphen, Diagramme, etc.) ist TikZ ein
beamer (Benutzeranleitung)
Nicht unbedingt für AuD notwendig (d.h. bitte keine Abgaben mit Beamer) aber allgemein fürs Studium interessant wenn man Präsentationen mit vielen Formeln oder ohne große Programme (eg. Powerpoint) schreiben will.
amsmath (Benutzeranleitung)
Obwohl LaTeX standardmäßig schon ganz schön gut mathematische Formeln darstellen kann, gibt es jedoch Grenzen, welche durch das amsmath Paket erweitert werden.
FAU LaTeX Vorlage
Wer daran Lust hat, kann versuchen seine LaTeX Dokumente mit dem offiziellem FAU Template zu gestalten. Vielleicht macht das mehr Sinn für öffentliche Dokumente als für Übungen…

Eine ausführlichere Liste weiterer Pakete findet sich hier und hier.

Arbeitsumgebungen

Man kann LaTeX genau wie Java in fast jedem Text Editor schreiben, welches in der lage ist Dateien byte-per-byte darzustellen.

Jedoch eignet sich nicht jeder Editor als perfekte Arbeitsumgebung. Diese TeX Stackexchange Liste zählt und zeigt verschiedene Vorschläge welche Programme man benutzen kann. Für Anfänger empfiehlt sich wahrscheinlich TeXmacs, LyX oder TeX Studio zu verwenden (obwohl ich immer auch AUCTeX empfehle, da ich es selbst benutze).

Wer mit mehreren Leuten an einem Dokument arbeiten muss, kann sich Overleaf anschauen, das in der Cloud eine collaborative Oberfläche anbietet, ähnlich wie Google Docs.

Umwege

Manche Leute behaupten es wäre falsch LaTeX direkt zu verwenden, sondern das LaTeX nur eine Art Zwischensprache (wie Assembler zu C und Maschinencode) begriffen werden sollte. Diese Methoden erlauben es einem "nebensächliches" wie die korrekten Pakete für umlaute zu ignorieren, während man immernoch einen Großteil der Vorteile von LaTeX genießen kann.

Pandoc

Pandoc — "a universal document converter". Dieses kann man nicht nur benutzen um aus "einfachen Textdateien" eine PDF zu generieren, sondern auch HTML seiten, EPUBs, .docx Dateien, Beamer und Powerpoint Präsentation, LaTeX, etc. sondern oft alles in einander (die Einschränkung ist PDFs in andere Formate zu konvertieren, da diese schwer vom Rechner lesbar sind).

Es ist zu beachten: LaTeX (oder eines der anderen genannten PDF backends) muss neben Pandoc installiert werden. Alles andere sollte in der Benutzeranleitung erklärt werden. Es lohnt sich auch mal die CLI optionen genauer anzuschauen.

Als Eingabeformat empfehle ich "Pandoc Markdown". Die Grundsätze von Markdown können auf dieser Seite gelernt werden. Mit

Ein beispielhafte Datei mag so aussehen:

---
title:  AuD Blatt X
author: Alyssa P. Hacker
...

# Aufgabe a)

1. Bubblesort hat eine Laufzeit von $O(n^2)$
2. Quicksort hat eine Laufzeit $O(\log n)$
3. Bogosort hat eine Laufzeit von $O(n!)$

# Aufgabe b)

| Methode | Aufrufe | Speicher |
|---------|--------:|---------:|
| `foo`   | 15      | 10 Byte  |
| `bar`   | 4       | 55 Byte  |
| `baz`   | 1       | 1 Byte   |
| `qux`   | 100     | 8 Byte   |

# Aufgabe c)

```java
public class InfiniteRecursion {
    public static void main(String[] args) {
        try { main(args); }
        catch (Exception e){ main(args); }
        finally { main(args); }
    }
}
```

Beachte Folgendes: Pandoc unterstützt verschiedene Arten von Tabellen welche hier erklärt werden, und mittels einer Option angemacht werden müssen (im oberen Beispiel wurde pipe_tables benutzt).

Zuletzt führt man diesen Befehl in der Shell aus und man ist fertig:

$ pandoc blattx.md -o blattx.pdf

Gibt man die Option -t ms an, benutzt Pandoc nicht LaTeX als backend sondern Groff, was auf vielen Systemen keine zusätzliche Installation benötigt.

Org Mode

Wer Emacs benutzt, kennt das wahrscheinlich schon. Org mode ist ein spezielles Emacs-Internes Markup Format das neben einer Vielzahl von Features (TODO Systeme, Zeitplaner, Tabellen, etc.) einfache Export-Methoden und Formatierung anbietet (diese Seite ist bspw. mit Org-mode geschrieben worden).

Wie auch bei Pandoc muss LaTeX zuvor installiert sein. Sobald man fertig ist die PDF zu generieren führt man C-c C-e aus und wählt die PDF Option (l, danach p drücken). Mehr Details sind in der Benutzeranleitung zu finden, welche auch in Emacs mitgeliefert wird (C-h i Org <enter>).

Groff/Troff

LaTeX ist ganz schön groß (fast 3GB, full install) und ein wenig langsam. Falls dieses für einen ein Ausschlusskriterium ist oder man etwas anderes ausprobieren will, gibt es noch "Groff". Hier oder hier kann man mehr über den Vergleich und die Beziehung zwischen TeX/LaTeX und Groff lesen.

Die meisten Leute kennen Groff daher das man Manpages damit schreibt (spezifisch mit dem -man macro set). Das hindert einen aber nicht daran anstatt Ascii ausgabe eine PDF Ausgabe zu generieren (mithilfe des -Tpdf Flags).

Zu den Begrifflichkeiten und Geschichte

Groff ist ein Programm des GNU Projekts, welches eine freie Reimplementierung von troff (typsetter roff) und nroff (newer roff) ist. troff und nroff sind Computersatzprogramme welche aus Bell Labs stammen und in Verbindung mit dem Unix Betriebssystem entwickelt wurden (es ist leicht zu erkennen das viele Spuren von Unix und dessen Umgebung in troff/nroff wiederzufinden sind, eg. im ursprünglichen pipe-system für macros oder der starken Zeilenorientierung). Beide basieren auf roff, das wiederrum eine reimplementation des Mulics Typesetters namens runoff ist. Wen die Geschichte interessiert, kann auf dieser Seite mehr erfahren.

Im Folgenden schreibe ich bewusst jedoch immer vom Programm Groff, obwohl alternativen existieren (eg. Heirloom troff, Plan9 troff).

Setup

Groff, wenn nicht schon vorinstalliert, ist recht leicht zu installieren. Wer Linux benutzt, sollte es mittels seines Paketmanagers auf das System laden können (meist heißt das Paket auch einfach groff), ansonsten gibt es auf der Website weitere Anleitungen.

Falls nichts schief gelaufen ist, sollte man auch damit fertig sein.

Erste Schritte

Ähnlich zu LaTeX schreibt man Prosa mit zusätzliche Markup. Dieser wesentlich einfacher, dafür öfters kryptischer.

Die wichtigsten Befehle fangen werden immer am Anfang einer Zeile geschrieben, und fangen mit einem . an. Dabei wird inoffiziell zwischen "Low Level" und "High Level" oder Macro befehlen unterschieden, indem die einen mit Kleinbuchstaben und die anderen jeweils mit Großbuchstaben geschrieben werden.

Macros werden in Macro Paketen definiert, und helfen einem dabei leichter Dokumente zu schreiben, ohne sich auf die Finessen und Details des Computersatz Fokussieren zu müssen (analog zu dem Verhältnisse zwischen TeX und LaTeX oder ConTeXt).

Wenn man mit Groff anfängt, empfehlen sich entweder das ms oder mom makropaket zu verwenden. Ersteres ist am weitesten verbreitet, zweiteres ist neuer.

Da mom sehr ausführlich Dokumentiert ist, werde ich mich hier das ms Paket beschränken (was auch Dokumentiert ist, auch mehrfach, aber öfters unzufriedenstellend). Zunächst ein Beispiel:

.TL                     \" Überschrift
XyZ Übungsaufgabe 5.F
.AU                     \" Author
Cy D. Fect
.PP                     \" Neuer Paragraph, mit Einrückung
Es folgt hier Prosa, welches direkt geschrieben werden kann,
jedoch müssen Befehle wie
.B
verwendet werden um den alles was darauf folgt groß zu schreiben,
.R
und wieder eines um es zurückzusetzen.
.PP
Ein einzelnes Wort kann einfach
.B so
formatiert werden.
.SH 1
Überschrift, erster Tiefe
.PP
Und dieses wird so fortgesetzt.

Um Bilder, Tabellen, etc. einzufügen, existieren weitere Makropackete, wie pic und tbl. Diese haben wiederum eine eigene Sprache die verstanden werden muss, aber ebenfalls nicht sonderlich schwer (gegebenenfalls umständlich) ist.

Genaueres und Weiteres kann in der Troff Benutzeranleitung nachgelesen werden, oder ausführlicher in Unix Text Processing von Tim O'Reilly. Weitere Literatur kann auf troff.org gefunden werden, oder in der Uni Bibliothek.

Produzieren einer PDF

Ist nun die Datei (bspw. input.ms) fertig geschrieben, lässt sich mit dem Folgenden Befehl die PDF generieren.

$ pdfroff -ms -Kutf8 -tp input.ms > output.pdf

Dabei bedeuten die Flags Folgendes

  • -ms sagt das wir das ms Makropaket benutzt haben
  • -Kutf8 gibt an das die Eingabe mit UTF8 geschrieben wurde
  • -tp oder -t -p aktiviert noch die Makros für Tabellen und Vektorgraphiken, welche oft nützlich sind.

Alle weiteren Eingaben sind input Dateien, und zuletzt wird der standard output, wo die PDF hingeschrieben wird, in eine Datei (i.d.f. output.pdf) umgeleitet.

Autor: Philip K.

Created: 15:59:32

Emacs 25.1.1 (Org mode 8.2.10)

Validate