Weitere Folien

Wer heute in TeX Live 2024 \documentclass{slides} schreibt, bekommt ein Dokument, das übersetzt. Die Klasse trägt die Version 2.4b vom 18. Mai 2022 und wird als Teil des LaTeX-Kerns weiterhin gepflegt – eine Folienklasse, die weit älter ist als beamer. Sie stammt von SliTeX ab, das gar keine Klasse war, sondern ein eigenes Format. Der historische Benutzerleitfaden des LaTeX-Projekts, der der Distribution beiliegt, hält in einer Zeile fest, dass slides das frühere SliTeX ist. Seit SliTeX in LaTeX 2e aufging – veröffentlicht am 1. Juni 1994 –, sind Folien eine Funktion von LaTeX und kein eigenes Programm mehr. Diese Seite behandelt alles außer beamer: die ältere Klasse, das powerdot, das beamer ablösen wollte, das halbe Dutzend Präsentationsklassen, die mit Datumsangaben aus dem letzten Jahrhundert noch in TeX Live liegen, den Umgang mit in Markdown geschriebenen Folien und – ehrlich gesagt – wann ein LaTeX-Foliensystem die falsche Wahl ist.

\documentclass{slides}: was der Überlebende von SliTeX tatsächlich tut

Als Erstes macht sie den Text groß. slides.def definiert \normalsize als \@setfontsize\normalsize\itwentypt{28pt}20 pt Grundschrift auf 28 pt Zeilenabstand. Als Zweites kommt das Vokabular: Folien stehen in \begin{slide} … \end{slide}, daneben gibt es eine overlay- und eine note-Umgebung. Setzt man ein Dokument mit je einem davon, entstehen drei Seiten mit den Fußzeilen 1, 1-a und 1-1 – die Folie nummeriert, das Overlay als Buchstabenzweig, die Notiz mit Bindestrich an die Foliennummer gehängt. Schon dieses „1-a" verrät, dass hier für das Übereinanderlegen echter Folien entworfen wurde. \onlyslides{...} und \onlynotes{...} nehmen eine Nummernliste entgegen und geben nur eine der beiden Sorten aus (Zeilen 92 und 97 in slides.def).

Am interessantesten ist der Umgang mit Farbe. slides.cls deklariert \DeclareMathVersion{invisible} – eine Mathematikversion, die buchstäblich unsichtbar ist. Zusammen mit \colorslides{...} und \blackandwhite{...} (Zeilen 103 und 116 in slides.def) lässt sich dieselbe Folie einmal je Farbe drucken: den rot zu setzenden Text sichtbar, alles andere unsichtbar, danach dasselbe nur mit Blau. Legt man die entstandenen Folien übereinander, ergibt sich eine passgenaue mehrfarbige Folie. In den 1980er-Jahren hieß „eine Farbfolie machen" genau das. Ein zweiter Stolperstein bei neuen Dokumenten ist das Papier. Zeile 102 von slides.cls erklärt \ExecuteOptions{letterpaper,final}, doch durch pdflatex geschickt entsteht ein A4-PDF (595,276 × 841,89 pt). pdftexconfig.tex von TeX Live hat \pdfpagewidth = 210 true mm bereits gesetzt, und die Standardklassen überschreiben das nie. Kommt es auf das Format an, geometry laden oder a4paper beziehungsweise letterpaper ausdrücklich übergeben – und danach mit pdfinfo nachsehen.

latex
\documentclass[a4paper]{slides}
\begin{document}
\begin{slide}
  Body text is 20pt here, on a 28pt baseline.
\end{slide}
\begin{overlay}
  Printed as slide 1-a, meant to sit on top of slide 1.
\end{overlay}
\begin{note}
  Printed as 1-1, for the speaker.
\end{note}
\end{document}

Lässt sich powerdot noch verwenden? Mit pdflatex jedenfalls nicht

Es ist vorhanden. powerdot.cls in TeX Live 2024 trägt Version 1.7 vom 19.05.2021, der LPPL-Wartungsstatus lautet „maintained", und aktueller Betreuer ist der Autor Hendri Adriaens. Ein totes Paket ist das nicht. Wer heute damit beginnt, verbringt allerdings die erste Stunde mit der Übersetzungskette statt mit dem Vortrag: Schickt man eine Datei mit \documentclass[style=klope]{powerdot} durch pdflatex, bricht es ab mit ! Package hyperref Error: Wrong DVI mode driver option 'dvips', gefolgt von einer langen Reihe ! Undefined control sequence. Die Ursache ist keine Vermutung, sie steht in der Klasse: Zeile 180 von powerdot.cls ruft, sofern nicht XeTeX läuft, \RequirePackage[setpagesize=false,dvips,...]{hyperref} auf und verdrahtet damit den dvips-Treiber fest in hyperref. powerdot ist eine PSTricks-Konstruktion und lädt zudem bedingungslos \RequirePackage{pstricks}.

Zwei Wege funktionieren. Der eine ist die PostScript-Kette, die die Klasse voraussetzt: latexdvipsps2pdf; der andere ist xelatex, für das die Klasse einen eigenen Zweig bereithält. Beide liefen hier durch, und eine Folie mit \pause entfaltete ihre Overlays korrekt (die PostScript-BoundingBox betrug 792 × 594 pt, also 11 × 8,25 Zoll quer, was powerdots Voreinstellung paper=screen im Verhältnis 4:3 entspricht). Allerdings stimmt die Seitenbox des entstehenden PDF nicht von allein – auf dieser Maschine ergab sich ein Quadrat von 594 × 594 pt –, also vor Druck oder Projektion mit pdfinfo prüfen und dvips sowie ps2pdf das Format nötigenfalls ausdrücklich mitgeben. Siebzehn Stile liegen als powerdot-*.sty bei (aggie, ciment, fyma, husky, ikeda, jefka, klope, paintings, pazik, sailor, simple, tycja, upen und weitere). Historisch trat powerdot die Nachfolge von prosper/HA-prosper an, und beamers eigene Danksagung nennt Hendri Adriaens für HA-prosper. Als Zeitkolorit: Die beiliegende README verweist für die Installation immer noch auf eine tex.ac.uk/cgi-bin/-Adresse.

terminal
# pdflatex stops here:
#   ! Package hyperref Error: Wrong DVI mode driver option `dvips',

# the route the class was designed for
latex talk.tex && latex talk.tex
dvips -o talk.ps talk.dvi
ps2pdf talk.ps talk.pdf

# or the branch the class provides itself
xelatex talk.tex && xelatex talk.tex

# always confirm the page box before you print
pdfinfo talk.pdf | grep "Page size"

Der Quelltext liest sich merklich anders als bei beamer. Folien stehen in \begin{slide}{Titel} … \end{slide}, das schrittweise Einblenden ist dasselbe \pause. Notizen sind allerdings nicht \note{...}, sondern eine note-Umgebung, und sie steht außerhalb der Folie – ein \note{...} innerhalb bricht den Lauf ab mit ! LaTeX Error: \begin{minipage} on input line 5 ended by \end{slide}. Die Ausgabe steuern zwei Klassenoptionen: mode nimmt present, print oder handout, display nimmt slides, notes oder slidesnotes. Gemessen faltete mode=handout,display=slidesnotes das \pause zusammen und druckte note 1 of slide 2 in die Fußzeile der Notizseite (im Handout-Modus wird landscape verweigert, worauf die Klasse mit einer Warnung hinweist). Ein Kunststück gehört powerdot allein: clock=true bettet Acrobat-JavaScript ins PDF ein und setzt eine laufende Uhr auf die Folie (clockformat=HH:MM:ss, clockrefresh=1000). Ob sie tickt, hängt vom JavaScript des Betrachters ab – also vorher im Saal ausprobieren.

latex
\documentclass[style=klope,mode=handout,display=slidesnotes]{powerdot}
\title{A talk}\author{Me}
\begin{document}
\maketitle
\begin{slide}{First}
  \begin{itemize}
    \item One\pause
    \item Two
  \end{itemize}
\end{slide}
% the note environment goes OUTSIDE the slide
\begin{note}{Reminder}
  Say hello here.
\end{note}
\end{document}

Die noch in TeX Live enthaltenen Präsentationsklassen – was ihre Daten verraten

Ein kpsewhich findet sie alle: seminar.cls, talk.cls, texpower.sty, pdfscreen.sty, pdfslide.sty, prosper.cls. CTAN löscht Altes nicht, also verteilt TeX Live es weiter, und die Daten nebeneinandergestellt ergeben die Geschichte der Präsentationsklassen in einer Spalte. Eine davon ist besonders: seminar, 1993 von Timothy Van Zandt als LaTeX-2.09-Dokumentstil geschrieben und von Sebastian Rahtz in eine LaTeX-2e-Klasse überführt, wird bis heute als v1.63a (2021/07/01) gepflegt. Und der Geschichtsabschnitt des beamer-Handbuchs hält fest, dass beamer als kleine private Makrosammlung zur bequemeren Nutzung der seminar-Klasse begann. Der älteste Eintrag dieser Liste ist mit anderen Worten der Ursprung des jüngsten.

DateiVersion und Datum in TeX Live 2024Was es ist
beamer.clsv3.71 (2024/01/06)De-facto-Standard; 2003 von Till Tantau geschrieben, seit 2010 von Joseph Wright u. a. betreut
slides.clsv2.4b (2022/05/18)Teil des LaTeX-Kerns; das frühere SliTeX
seminar.clsv1.63a (2021/07/01)1993 von Timothy Van Zandt erstellt; die Klasse, aus der beamer hervorging
powerdot.clsv1.7 (2021/05/19)PSTricks-Konstruktion; Nachfolger von prosper/HA-prosper
talk.clsv1.1 (2006/07/11)eine Klasse rund um mehrere Fassungen desselben Materials
texpower.styv0.2 (2005/04/08)ein Paket für dynamische Effekte, keine Klasse
prosper.clsv1.5 (2001/07/17)von Frédéric Goualard und Peter Møller Neergaard; von powerdot abgelöst
pdfscreen.styv1.5 (2000/07/07)zur Gestaltung bildschirmtauglicher PDFs; von C. V. Radhakrishnan
pdfslide.styv0.50 (1999/10/10)das älteste Datum dieser Liste; ein früher Versuch mit PDF-Folien

Im japanischen Umfeld liegt eine weitere Möglichkeit nahe. Wer ohnehin mit jsarticle schreibt, erhält mit \documentclass[slide,papersize,landscape]{jsarticle} ein Folienlayout in großer Schrift. Zeile 80 von jsarticle.cls erklärt \DeclareOption{slide}{\@slidetrue\def\jsc@magscale{3.583}}, und dieser Vergrößerungsfaktor 3.583 ist identisch mit dem der 36pt-Option derselben Klasse – slide entspricht also faktisch 36 pt. Wer mehr braucht: Die Klasse reicht bis 43pt (Faktor 4.300). Durch upLaTeX und dvipdfmx geschickt entstand hier ein A4-Quer-PDF (841,89 × 595,28 pt). Themes und Overlays gibt es nicht, dafür erbt man die Formatierung der japanischen Dokumente, die man ohnehin schreibt – genug, um die Folien für das interne Seminar von morgen in zehn Minuten zu bauen.

In Markdown geschriebene Folien: Marp, reveal.js, pandoc und das Paket markdown

Der Weg gabelt sich: Entweder das Markdown außerhalb verarbeiten und LaTeX das Ergebnis übergeben oder LaTeX das Markdown selbst lesen lassen. Marp und die reveal.js-Familie stehen für den ersten Zweig; es sind Node- und Browser-Programme, die per npm installiert werden und nicht zu TeX Live gehören – weder marp noch pandoc sind auf dieser Maschine vorhanden. Die übliche Brücke ist pandoc, dessen Handbuch beamer unter den Ausgabeformaten führt und beamer, revealjs, s5, slidy, dzslides und pptx als Folienformate nennt; dasselbe Handbuch hält fest, dass für die PDF-Erzeugung eine installierte LaTeX-Engine nötig ist. Auch über pandoc braucht man also am Ende TeX Live.

Der andere Weg bleibt innerhalb von TeX Live. Das Paket markdown (v3.4.2, 2024-03-09) trägt einen Markdown-Parser in TeX hinein und setzt den Inhalt einer markdown-Umgebung unmittelbar. Nach \usepackage[hybrid]{markdown} und einer Stichpunktliste samt *Hervorhebung* und inline code in einem als [fragile] markierten beamer-Frame kam alles korrekt gesetzt heraus. Eine Bedingung gibt es: Unter pdfLaTeX ist -shell-escape zwingend. Ohne es bricht der Lauf mit ! Package markdown Error: Shell escape is restricted ab, gefolgt von Fatal error occurred, no output PDF file produced!. Praktisch passt das genau dort, wo das Team in Markdown schreibt, Formeln und Abbildungen aber LaTeX-Qualität brauchen. Soll dagegen das Aussehen der Folien selbst in Markdown festgelegt werden, ist das Marps Aufgabe, nicht die von LaTeX.

latex
\documentclass[aspectratio=169]{beamer}
\usepackage[hybrid]{markdown}
\begin{document}
\begin{frame}[fragile]{From Markdown}
\begin{markdown}
- first bullet
- second bullet with *emphasis*

Ordinary paragraph with `inline code`.
\end{markdown}
\end{frame}
\end{document}

% compile with: pdflatex -shell-escape file.tex
% without it:  ! Package markdown Error: Shell escape is restricted

Wann ein LaTeX-Foliensystem die falsche Wahl ist

Ehrlich gesagt gibt es drei Lagen, in denen LaTeX das falsche Werkzeug ist. Erstens ein Vortrag, dessen Aussehen man dutzendfach durchprobiert. LaTeX-Folien sind ein Medium des Bearbeitens und Wartens: Ein Deck mit 40 Frames und 121 Seiten brauchte hier 3,5 s pro Durchlauf, und wegen .nav und .toc sind zwei Durchläufe nötig. Für millimeterweises Verschieben taugt dieser Umweg nicht. Zweitens gemeinsames Bearbeiten. Schreibt die Mitautorin kein TeX, heißt eine .tex-Datei zu schicken so viel wie „bitte installiere erst meine Werkzeugkette und antworte dann". Drittens eine Veranstaltung, die .pptx verlangt; auf eine PDF-nach-PowerPoint-Konvertierung zu setzen ist schlechter, als von Anfang an ein anderes Werkzeug zu wählen. Klar überlegen ist LaTeX, wenn Formeln, Code und Abbildungen aus derselben Pipeline stammen wie der Aufsatz, wenn Vortrag und Handout mechanisch aus einer Quelle entstehen sollen und wenn ein PDF gefragt ist, das sich auf keinem Rechner um einen Millimeter verschiebt – genau das, sich nicht um die Ausstattung des Konferenzrechners sorgen zu müssen, führt beamers Handbuch unter seinen Vorzügen auf.

  • Ein neuer Vortragbeamer. Als Einziges in dieser Liste noch in aktiver Entwicklung, und Themes, Overlays, Handout-Modus und Notizen sind bereits da.
  • Ein altes .tex übernommen → zuerst \documentclass lesen. slides heißt Abstammung von SliTeX; prosper heißt Kandidat für den Umstieg auf powerdot.
  • PSTricks-Zeichnungen stehen im Mittelpunktpowerdot, aber übersetzt mit latexdvipsps2pdf oder mit xelatex; pdflatex kommt nicht durch.
  • Japanische Folien bis morgen → die slide-Option von jsarticle (faktisch 36 pt, bei Bedarf bis 43pt).
  • Die Quelle ist Markdown → pandoc außerhalb oder das Paket markdown innerhalb von TeX Live (unter pdfLaTeX ist -shell-escape zwingend).
  • Die Veranstaltung verlangt .pptx → LaTeX nicht mit Gewalt hindurchzwingen. Von Anfang an ein anderes Werkzeug schlägt die Wette auf eine Konvertierung.