\usetheme{Madrid}, \usetheme{Warsaw}, \usetheme{Singapore} – beamer, die LaTeX-Klasse für Präsentationsfolien, bringt 27 aktuelle Präsentationsthemes mit, und jedes einzelne trägt den Namen einer Stadt. Der Autor erklärt es im Handbuch selbst: Ihm gingen die Namensideen aus, und die Städte sind Orte, an denen er oder ein Mitautor eine Konferenz oder einen Workshop besucht hat. Diese Beiläufigkeit prägt die Klasse insgesamt. beamer zu schreiben gleicht fast jedem anderen LaTeX-Dokument, mit einem einzigen Unterschied, der alles verändert: Die Einheit ist der frame, nicht die Seite. Diese Seite geht von dieser Tatsache aus – Frames, Overlays, Themes und warum eine verbatim-Umgebung eine Folie sofort zerbricht.
Worin sich beamer von einer normalen Dokumentklasse unterscheidet
Sobald \documentclass{beamer} dasteht, wirken die Werkzeuge zum Umbrechen von Seiten nicht mehr. Ein \newpage innerhalb eines Frames erzeugt weder Fehler noch Warnung – es wird schlicht ignoriert; im Test erscheinen die beiden Absätze links und rechts davon nebeneinander auf einer einzigen Folie. Der Grund ist einfach: In beamer entscheidet die Frame-Grenze über den Seitenumbruch, nicht die schreibende Person. Aus demselben Grund druckt \section{...} im Textkörper nichts – es meldet sich nur bei Inhaltsverzeichnis und Navigation an. Und Text außerhalb jedes \begin{frame} ist ebenfalls kein Fehler: Er wird als nackte Seite ganz ohne Theme gesetzt. Das ist fast immer die Ursache für „mittendrin steckt eine seltsame Seite“.
Der andere Bruch mit dem Papierdokument sind die Maße: beamer setzt einen Bildschirm, kein Blatt. Voreingestellt ist 4:3, in beamer.cls ausgeschrieben als \beamer@paperwidth{12.80cm} und \beamer@paperheight{9.60cm} – also 128 mm × 96 mm. Eine Klassenoption ändert das Verhältnis: \documentclass[aspectratio=169]{beamer} ergibt 16:9 bei 160 mm × 90 mm. Die Fassung in TeX Live 2024 kennt acht explizite Werte: 1610, 169, 149, 54, 43, 32, 141 und 2013. Interessant ist, was mit allem anderen geschieht: Bei einer Zahl außerhalb der Liste fixiert beamer die Höhe auf 9.60 cm und berechnet das Verhältnis, indem es die Ziffern aufteilt. Mit aspectratio=21 entsteht tatsächlich eine 2:1-Folie von 19,2 cm Breite. Die Grundschriftgröße wird wie gewohnt gesetzt, etwa \documentclass[11pt]{beamer}; voreingestellt sind 11pt.
Die frame-Umgebung: eine Folie ist nicht eine Seite
Das Herz von beamer ist die frame-Umgebung. Alles von \begin{frame} bis \end{frame} ist ein logischer Bildschirm; darin stehen Stichpunkte, Abbildungen und Gleichungen. Eine Überschrift gibt man mit \frametitle{...} oder als Argument: \begin{frame}{Title}. Entscheidend ist, dass ein frame nicht zwangsläufig eine Seite ist. Mit den Overlays des nächsten Abschnitts erzeugt ein einzelner frame mehrere PDF-Seiten, die beim Blättern als schrittweise Einblendung erscheinen. Der Frame ist der logische Bildschirm, die PDF-Seite ein Einzelbild davon – beamers eigene Dokumentation trennt die Begriffe: das eine heißt frame, das andere slide.
frame nimmt Optionen in Klammern entgegen. Am häufigsten greift man zu [allowframebreaks], wenn der Inhalt senkrecht überläuft. beamer verteilt den Frame dann auf so viele Seiten wie nötig und – ein hübsches Detail – hängt an den Frame-Titel eine römische Zahl an: Bei einer Liste von 22 Punkten trägt die erste Seite die Überschrift „Long I“, die zweite „Long II“. Weiter lohnen sich [t], [c] und [b] zur Ausrichtung oben, mittig oder unten; [plain], das den Zierrat des Themes entfernt, damit eine Abbildung den Bildschirm füllt; [label=...], um den Frame später mit \againframe erneut aufzurufen; und [noframenumbering], damit ein Frame nicht mitgezählt wird. Das [fragile] des nächsten Abschnitts steht an derselben Stelle.
Titeldaten werden wie in article in der Präambel deklariert. \title{...}, \author{...}, \institute{...} und \date{...} schreiben, dann im Textkörper \titlepage in einen Frame setzen, um die Titelfolie zu erzeugen (\maketitle liefert dasselbe). Bei längeren Vorträgen speist eine Gliederung mit \section{...} die Navigation am oberen Rand jeder Folie. Sind die Abschnitte deklariert, ergibt \tableofcontents in einem Frame eine Inhaltsfolie, und \tableofcontents[currentsection] hebt nur den aktuellen Abschnitt hervor. Damit ein solcher Frame automatisch zu Beginn jedes Abschnitts erscheint, richtet man ihn in der Präambel mit \AtBeginSection[]{...} ein.
Overlays: der Unterschied zwischen \pause und <2->
Inhalte häppchenweise zu enthüllen ist die Aufgabe der Overlays, und es gibt zwei Zugänge. \pause steht einfach mitten im Frame und schiebt alles Nachfolgende auf die nächste Folie – bequem, aber es kann nur in Quelltextreihenfolge Schritt für Schritt aufbauen. Der andere ist die Overlay-Spezifikation, die spitze Klammer <...> direkt nach einem Befehl. \item<1-> heißt „ab Folie 1“, \item<2> „nur auf Folie 2“, \item<2-> „ab Folie 2“. Bereiche und Lücken lassen sich kombinieren, etwa <-2,4-5,7>. Im Test verhält es sich genau wie geschrieben: Der mit \item<3> markierte Punkt erscheint auf der dritten Folie, \only<2>{...} zeigt sich auf der zweiten und sonst nirgends, und \uncover<3->{...} wird ab der dritten sichtbar.
| Befehl | Verhalten | Platz im verborgenen Zustand |
|---|---|---|
\pause | Schiebt das Folgende auf die nächste Folie | Inhalt wird nacheinander ergänzt, die Frage stellt sich nicht |
\uncover<2->{...} | Wird auf den angegebenen Folien sichtbar | Immer reserviert, das Layout springt nie |
\onslide<2->{...} | Auf den angegebenen Folien sichtbar, sonst verborgen | Immer reserviert |
\only<2>{...} | Gibt nur auf den angegebenen Folien aus | Nicht reserviert, nachfolgender Inhalt rückt nach |
\alert<2>{...} | Wechselt auf den angegebenen Folien zur Alert-Farbe | Immer sichtbar, daher immer reserviert |
[<+->] | An einer Listenumgebung schaltet es alle Punkte automatisch durch | Verhält sich wie \uncover |
Die dritte Spalte macht diese Tabelle nützlich. \uncover und \onslide halten den Platz auch im verborgenen Zustand frei, sodass sich beim Erscheinen nichts ringsum bewegt. \only fügt die Ausgabe selbst ein und entfernt sie wieder, der verborgene Platz wird zurückgewonnen und alles Nachfolgende verschiebt sich. Um einen Teil einer Formel auszutauschen, ist genau das erwünscht; um eine Stichpunktliste abzuarbeiten, ist es eine Falle, und \uncover oder [<+->] ist die sicherere Wahl. Dieselbe Overlay-Syntax hängt sich außer an \alert auch an \textbf und \textcolor, „nur auf dieser Folie fett“ braucht also keine neue Grammatik.
% the blunt instrument: everything after \pause moves to the next slide
\begin{frame}{Results}
\begin{itemize}
\item First point
\pause
\item Second point
\end{itemize}
\end{frame}
% overlay specifications: say exactly which slides each piece belongs to
\begin{frame}{Results}
\begin{itemize}
\item<1-> Always there
\item<2-> From slide two
\item<3> Slide three only
\end{itemize}
\only<2>{Shown on slide 2, and takes no space otherwise}
\uncover<3->{Space is reserved from the start, ink appears on slide 3}
\end{frame}
% the same stepwise reveal, without numbering each item by hand
\begin{frame}{Results}
\begin{itemize}[<+->]
\item Observation
\item Interpretation
\item Limitation
\end{itemize}
\end{frame}Themes: Städte, fliegende Tiere, Blumen und Meerestiere
Es gibt fünf Arten von Themes, und der Name verrät, welche Art vorliegt. Die Städtenamen vom Anfang – Madrid, Warsaw, Berlin, Singapore und die übrigen – sind Präsentationsthemes, die alles auf einmal festlegen. Bei den Farbthemes wird die Idee konsequent durchgezogen, und das Handbuch lüftet das Geheimnis selbst. Fliegende Tiere (albatross, beetle, crane) sind die „vollständigen“ Farbthemes, die sämtliche Farben selbst bestimmen. Blumen (lily, orchid, rose) sind innere Farbthemes und ändern nur die Farben innerer Elemente wie Blöcke. Meerestiere (whale, dolphin, seahorse) sind äußere Farbthemes und regeln die Palette von Kopfzeile, Fußzeile und Seitenleiste. Wer also \usecolortheme{whale} schreibt, weiß schon am Namen, dass nur der Rahmen ringsum betroffen ist.
| Befehl | Was er festlegt | Beispiel |
|---|---|---|
\usetheme | Layout, Navigation und Farben auf einmal | \usetheme{Madrid} (eine Stadt) |
\usecolortheme | Tauscht nur die Palette | \usecolortheme{seahorse} (Meerestier = außen) |
\usefonttheme | Schriften für Überschriften und Text | \usefonttheme{serif}, \usefonttheme{professionalfonts} |
\useinnertheme | Gestaltung innerer Elemente (Aufzählungszeichen, Blockformen) | \useinnertheme{rounded} |
\useoutertheme | Gestaltung des Rahmens (Kopfzeile, Fußzeile, Seitenleiste) | \useoutertheme{infolines} |
In der Praxis ist der schnelle Weg, ein \usetheme{...} zu wählen und nur die störenden Teile mit den vier darunterstehenden Befehlen zu überschreiben. Nach Zweck auswählen: Madrid oder Boadilla, wenn eine Navigationsleiste nur im Weg wäre, Frankfurt oder Warsaw, wenn das Publikum seinen Standort sehen soll. Für ein zeitgemäßeres Aussehen ist metropolis (\usetheme{metropolis}) die übliche Antwort – nicht Teil von beamer selbst, aber als eigenes Paket in TeX Live enthalten. Eine Warnung: Themes durchzuprobieren kostet zuverlässig einen halben Tag. Das Publikum schaut auf den Inhalt, nicht auf die Palette; also früh entscheiden und zum Schreiben zurückkehren.
block und columns: Inhalt rahmen und die Folie teilen
Um Inhalt in einer gerahmten Box hervorzuheben, dient die block-Umgebung: \begin{block}{Title}…\end{block} erzeugt eine Box mit Titel, farblich passend zum Theme. Der auffällige alertblock und der exampleblock funktionieren genauso, und theorem sowie definition stehen für Sätze und Definitionen unmittelbar bereit (beamer lädt amsthm selbst). Um eine Folie links und rechts zu teilen, setzt man \column{width}-Einträge in die columns-Umgebung – der Standardgriff, um eine Abbildung neben ihre Erklärung zu stellen.
\begin{frame}{Comparison}
\begin{columns}
\column{0.5\textwidth}
\begin{block}{Before}
The old estimate.
\end{block}
\column{0.5\textwidth}
\begin{alertblock}{After}
The corrected one.
\end{alertblock}
\end{columns}
\end{frame}Warum eine verbatim-Umgebung einen Frame zerbricht und was [fragile] tut
Steckt eine verbatim-Umgebung oder ein lstlisting aus dem Paket listings in einem Frame, bricht der Lauf ab, sofern nicht \begin{frame}[fragile] dasteht. Unangenehm ist die Art des Abbruchs. Unter TeX Live 2024 zeigt beamer nicht auf eine Zeilennummer, sondern auf die ganze Datei und meldet: Runaway argument?, dann ! File ended while scanning use of \@xverbatim., dann I suspect you have forgotten a }, causing me to read past where you wanted me to stop. und schließlich ! Emergency stop. Man erhält den Namen eines internen Makros, das man nie getippt hat, dazu eine selbstbewusste Diagnose: eine Klammer sei offen geblieben. Es ist keine Klammer offen. Wer dem Rat folgt, zählt lange Klammern in einer Datei, deren Klammern völlig in Ordnung sind.
Die wahre Ursache sind nicht Klammern, sondern die Reihenfolge des Einlesens. beamer liest den gesamten Körper eines Frames zuerst als Argument ein und setzt ihn danach einmal je Overlay-Folie. verbatim arbeitet jedoch, indem es die Deutung der Zeichen beim Lesen ändert – für einen bereits verschluckten Körper zu spät. Deshalb beginnt der Fehler mit Runaway argument?: Das Unglück geschieht genau in dem Moment, in dem der Körper als Argument gelesen wird. [fragile] schickt beamer einen anderen Weg. In den Worten des Handbuchs wird der Frame-Inhalt in eine externe Datei geschrieben und wieder eingelesen. Beim Übersetzen lässt sich das beobachten: Im Arbeitsverzeichnis erscheint eine neue Datei mit der Endung .vrb, die den Frame-Körper wortwörtlich enthält.
Der Umweg über eine Datei erzeugt eine zweite Regel. Wie das Handbuch ausdrücklich festhält, muss in einem [fragile]-Frame \end{frame} allein auf seiner Zeile stehen (führende Leerzeichen ausgenommen). beamer sucht nach genau dieser Zeichenfolge am Zeilenanfang, um das Ende des Schreibens zu erkennen; wer es als \end{verbatim} \end{frame} zusammenzieht, scheitert genauso, diesmal unter dem Namen eines anderen internen Makros: ! File ended while scanning use of \next. Und noch etwas: Overlay-Befehle wie \alert<2>{...} wirken innerhalb von verbatim nicht, denn Zeichen unverändert auszugeben ist die eigentliche Aufgabe von verbatim. Wer einen Teil eines Listings hervorheben will, greift zur beamer-eigenen Umgebung semiverbatim – fast identisch mit verbatim, nur dass \, { und } als Befehle erhalten bleiben, sodass sich ein \alert<2>{...} einschieben lässt.
\begin{frame}[fragile]{An algorithm} % [fragile] -> body goes via a .vrb file
\begin{verbatim}
int main(void) { return 0; }
\end{verbatim}
\end{frame} % must be alone on its own line
% to highlight part of a listing, use semiverbatim rather than verbatim
\begin{frame}[fragile]{Highlighted}
\begin{semiverbatim}
for (int i = 2; i < 100; i++)
\alert<2>{if (is_prime[i])}
\end{semiverbatim}
\end{frame}Das kleinste beamer-Dokument, das sich übersetzen lässt
Hier das Minimum mit Theme, Titelfolie und schrittweiser Liste. Die Präambel deklariert Theme und Titeldaten, der Textkörper setzt \titlepage in den ersten Frame und eine [<+->]-Liste in den zweiten. Es sind zwei frames, doch die Overlays dehnen das PDF auf vier Seiten. Für japanische Folien ergänzt man in der Präambel die zur Engine passende Japanisch-Unterstützung, unter LuaLaTeX etwa das Laden von luatexja.
\documentclass[aspectratio=169,11pt]{beamer}
\usetheme{Madrid}
\usecolortheme{seahorse}
\title{My Talk}
\author{Ada Lovelace}
\institute{Analytical Engine Lab}
\date{\today}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Overview}
\begin{itemize}[<+->]
\item Background
\item Method
\item Results
\end{itemize}
\end{frame}
\end{document}Ein Arbeitsablauf für einen echten Vortrag
beamer ist kein Werkzeug, um einen Aufsatz in Scheiben zu schneiden. Teile den Vortrag in wenige Bewegungen – Problem, Methode, Ergebnisse, Fazit – und setze in jeden frame genau eine Aussage. Statt lange Absätze aus dem Manuskript zu kopieren, verdichte sie zu Abbildungen, Gleichungen und kurzen Stichpunkten und ergänze \pause oder <2-> nur dort, wo schrittweises Enthüllen wirklich etwas bringt. Overlays steuern die Reihenfolge einer Erklärung; Zierrat sind sie nicht.
- Zuerst das Seitenverhältnis festlegen — Ist der Projektor bekannt,
aspectratio=169oder43vor jeder Gestaltung festzurren. Eine spätere Änderung verschiebt jede bereits platzierte Abbildung. - Dichte je Folie — drei bis fünf Stichpunkte. Läuft es über, liest sich ein geteilter Frame meist besser als die Flucht in
[allowframebreaks]. - Code und Logs — Frames mit
verbatim,lstlistingodermintedstets[fragile]geben und\end{frame}allein auf seiner Zeile lassen. - Frames, in denen eine Abbildung dominieren soll —
[plain]entfernt den Zierrat des Themes, damit das Bild den ganzen Bildschirm nutzt. - Das PDF zum Verteilen — Vortragsfolien und Handout sind verschiedene Dokumente. Das Zusammenfalten der Overlays im
handout-Modus und das Schreiben von Vortragsnotizen behandelt die Handout-Seite.