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:
- "Inline" (dh. Sonderzeichen die in einer Zeile verwendet werden,
eg. α, \(2^n\), …) werden mit Zwei
$
-Zeichen abgetrennt (alternativ\( ... \)
). - 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 mita
als Zähler undb
als Nenner.\sqrt[n]{x}
stellt dien
'te Wurzel vonx
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 dasms
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.