Poster (beamerposter/tikzposter/a0poster)

Der häufigste Unfall beim Bau eines A0-Posters in LaTeX ist die Entdeckung in der Druckerei, dass die Datei A4 ist. Auf TeX Live 2024 passiert genau das: Schickt man die Klasse a0poster durch pdflatex, meldet pdfinfo als Papierformat 595,276 × 841,89 pt, also A4. Zielt man mit beamerposter oder tikzposter auf dasselbe A0, kommen beide korrekt mit 2383,94 × 3370,39 pt (A0) heraus. Diese Seite vergleicht die drei Wege zum Konferenzposter – beamerposter, das beamer weiterverwendet; tikzposter, eine eigene, auf TikZ gebaute Klasse; und a0poster von 1997 – jeweils kompiliert und mit pdfinfo vermessen. Zum Schluss steht, was vor der Übergabe an die Druckerei zu prüfen ist.

Die Postergröße: mit pdfinfo überprüfen

Sehen Sie sich vor allem anderen die Maße des tatsächlich erzeugten PDFs an. pdfinfo poster.pdf gibt sie in der Zeile Page size: aus. A0 lautet 2383,94 × 3370,39 pt, umgerechnet 84,1 × 118,9 cm. Steht dort weiterhin A4 (595,276 × 841,89 pt), liegt das Problem nicht an der Klassenoption, sondern daran, dass die Seitengröße nie im PDF angekommen ist. Mit bloßem Auge ist das nicht zu erkennen: Ein Poster wird auf dem Bildschirm stets verkleinert gezeigt, ein auf A4 gequetschtes sieht daher einfach nach einem klein dargestellten Poster aus.

Klasse oder PaketPapier unter pdflatex (gemessen)Wie die Größe gesetzt wird
beamerposter2383,94 × 3370,39 pt (A0 hoch)Direkt aus size=a0 und orientation ins PDF geschrieben
tikzposter2383,94 × 3370,39 pt (A0 hoch)a0paper wird an geometry gereicht und erreicht so das PDF
a0poster595,276 × 841,89 pt (A4)Läuft über ein PostScript-\special, das pdflatex ignoriert
baposterNicht ladbarIn TeX Live 2024 nicht enthalten (siehe unten)

beamerposter benutzen: eigentlich nur size und scale

Wer beamer bereits kennt, nimmt mit beamerposter den kürzesten Weg. Über \documentclass[final]{beamer} kommt \usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter}, und block, columns, Themes und Farbthemes laufen unverändert im Posterformat weiter. Es gibt keine neue Notation zu lernen. Die Option [final] klappt Overlays zu einer einzigen Seite zusammen, was zählt, wenn ein Foliensatz mit \pause oder \only<2> wiederverwendet wird.

poster.tex
\documentclass[final]{beamer}
% size: a0b a0 a1 a2 a3 a4 custom  /  orientation: portrait landscape
\usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter}
\title{A Poster Title}
\author{A. Author}
\institute{Somewhere}
\begin{document}
\begin{frame}[t]{}
\maketitle
\begin{columns}[t]
  \begin{column}{0.45\textwidth}
    \begin{block}{Introduction}
      Body text at poster scale.
    \end{block}
  \end{column}
  \begin{column}{0.45\textwidth}
    \begin{block}{Results}
      More body text.
    \end{block}
  \end{column}
\end{columns}
\end{frame}
\end{document}

scale ist die Schriftvergrößerung, und hier zeigt sich der Kniff von beamerposter: für jede Papiergröße ist ein Grundfaktor vornormiert. In beamerposter.sty steht für a0 und a0b 1.0, für a1 0.70710678, für a2 0.5, für a3 0.35355339 und für a4 0.25. Diese Folge sind genau die Potenzen von 1/√2, passend dazu, dass die A-Reihe pro Schritt die Fläche halbiert – die Seitenlänge also um 1/√2 schrumpft. Folglich wirkt scale=1.0 auf jedem Papier gleich groß: Baut man ein A1-Poster als A0 neu, bleibt die scheinbare Schriftgröße dieselbe. Gemessen ergibt a0 mit scale=1.0 ein \normalsize von 24,88 pt bei 30 pt Zeilenabstand, scale=1.4 ergibt 34,83 pt bei 42 pt.

Das Papier stammt aus size=a0b a0 a1 a2 a3 a4 custom, dazu orientation=portrait oder landscape. Gemessen tauschte orientation=landscape die Maße auf 3370,39 × 2383,94 pt, und size=a1 ergab 1683,78 × 2383,94 pt (A1) – genau wie erwartet. Bei size=custom werden width und height als blanke Zahlen in Zentimetern übergeben: width=200,height=300 lieferte 5669,29 × 8503,94 pt, ein zwei mal drei Meter großes Banner ohne Zutun. Das beamerposter in TeX Live 2024 ist v1.13 vom 23. April 2018.

tikzposter: eine eigene Klasse, bei der das Theme das Aussehen bestimmt

tikzposter wurde von Anfang an für Poster geschrieben. Man deklariert \documentclass[25pt,a0paper,portrait,margin=10mm]{tikzposter}, schreibt den Inhalt als \block{Titel}{Text} und verteilt ihn mit \begin{columns} und \column{0.5}. Das Vokabular von beamer gilt hier nicht. Das Aussehen ändert sich vollständig mit einem einzigen \usetheme{...}, und die Fassung in TeX Live 2024 bringt neun davon mit: Autumn, Basic, Board, Default, Desert, Envelope, Rays, Simple und Wave. Alle neun wurden hier kompiliert, und jedes erzeugte fehlerfrei ein A0-PDF.

poster.tex
\documentclass[25pt,a0paper,portrait,margin=10mm]{tikzposter}
\usetheme{Board}      % Autumn Basic Board Default Desert Envelope Rays Simple Wave
\usecolorstyle{Britain}  % Australia Britain Default Denmark Germany Russia Spain Sweden
\title{A Poster Title}
\author{A. Author}
\institute{Somewhere}
\begin{document}
\maketitle
\begin{columns}
\column{0.5}
\block{Introduction}{Body text at poster scale.}
\column{0.5}
\block{Results}{%
  \begin{tikzfigure}[A caption]
    % tikzfigure does NOT open a tikzpicture -- you must open one yourself
    \begin{tikzpicture}
      \draw (0,0) rectangle (2,2);
    \end{tikzpicture}
  \end{tikzfigure}}
\end{columns}
\end{document}

Das Aussehen ist vier Schichten tief: neben \usetheme gibt es \usecolorstyle (acht Stück, kurioserweise nach Ländern benannt – Australia, Britain, Default, Denmark, Germany, Russia, Spain, Sweden), \usecolorpalette (fünf) und \useblockstyle (sieben: Basic, Corner, Default, Envelope, Minimal, Slide, TornOut). Ein dokumentierter Befehl funktioniert allerdings nicht im tikzposter v2.0 (15. Januar 2014) aus TeX Live 2024. \innerblock stirbt mit ! TeX capacity exceeded, sorry [grouping levels=255]. – bei jedem Theme und selbst nach vorherigem \useinnerblockstyle – und es entsteht überhaupt kein PDF. Für einen verschachtelten Kasten nimmt man \coloredbox{...}, das im selben Aufbau sauber durchlief.

Die andere Falle ist tikzfigure. Die Umgebung richtet nur ein center und einen Bildunterschriften-Zähler ein – sie öffnet kein tikzpicture. Schreibt man ein nacktes \draw und setzt zugleich eine Beschriftung ins optionale Argument, erscheint ! LaTeX Error: There's no line here to end. Ursache ist Zeile 818 von tikzposter.cls, die unmittelbar vor der Beschriftung ein \\[10pt] setzt: Endete der Inhalt im vertikalen Modus, hat dieses \\ keine Zeile zu beenden. Ohne Beschriftung verschwindet der Fehler, doch richtig ist, innen ein tikzpicture zu öffnen, wie im Beispiel oben. Die Schriftgröße kommt aus den Klassenoptionen 12pt, 14pt, 17pt, 20pt und 25pt; mit 25pt betrug das gemessene \normalsize 24,88 pt, mit 20pt 20,74 pt.

Warum a0poster als A4 herauskommt – und zwei Wege zu einem echten A0-PDF

a0poster liefert A4, weil die Papiergröße über ein PostScript-\special mitgeteilt wird. Kompiliert auf TeX Live 2024, füllt sich das Log mit Non-PDF special ignored!, darunter <special> header=./a0header.ps und <special> papersize=83.96cm,118.82cm. pdfTeX verwirft beides, sodass das Papier auf der Vorgabe von article, also A4, bleibt. Die Klasse schreibt beim Kompilieren tatsächlich ein PostScript-Fragment namens a0header.ps ins Arbeitsverzeichnis, mit PageSize [2380 3368] und setpagedevice darin. Lesen soll es dvips. Es handelt sich um v1.22b vom 31. Januar 2004 von Gerlinde Kettl und Matthias Weiser, in Arbeit seit 1997 – ein Entwurf aus der Blütezeit von DVI, unverändert erhalten.

shell
# Route 1 -- the route the class was designed for (DVI to PostScript to PDF)
latex poster.tex && dvips poster.dvi -o poster.ps && ps2pdf poster.ps
pdfinfo poster.pdf | grep "Page size"   # 2384 x 3370 pts (A0)

# Route 2 -- stay with pdflatex and copy the paper size into the PDF yourself.
# Put these two lines in the preamble of poster.tex:
#   \pdfpagewidth=\paperwidth
#   \pdfpageheight=\paperheight
pdflatex poster.tex
pdfinfo poster.pdf | grep "Page size"   # 2379.97 x 3368.13 pts (A0)

Es gibt zwei Auswege. Der vorgesehene Weg ist latex, dann dvips, dann ps2pdf; gemessen trug die .ps oben %%DocumentPaperSizes: a0, und das entstandene PDF maß 2384 × 3370 pt. Der andere bleibt bei pdflatex und überträgt die von der Klasse berechneten Maße selbst ins PDF, indem \pdfpagewidth=\paperwidth und \pdfpageheight=\paperheight in die Präambel kommen; das ergab 2379,97 × 3368,13 pt. Zu beachten ist außerdem, dass ein blankes \documentclass{a0poster} auf landscape,a0b,final voreingestellt ist und a0b nicht ISO-A0 meint, sondern ein übergroßes Blatt von 119 × 87 cm. Wem das Format wichtig ist, schreibt [a0,portrait] ausdrücklich. Beim Schriftgrad wird \normalsize auf 24,88 pt neu definiert, und die Klasse ergänzt eigene Befehle: \veryHuge (74,3 pt), \VeryHuge (89,16 pt) und \VERYHuge (107 pt). Eine eigene Spalten- oder Blockmechanik bringt sie nicht mit; der Inhalt wird selbst angeordnet, mit der Umgebung multicols aus multicol oder mit minipage.

baposter ist nicht in TeX Live 2024 enthalten

baposter, das Inhalte als Raster aus Kästen anordnet, wird in sehr vielen Poster-Anleitungen genannt – steht aber nicht in TeX Live 2024. kpsewhich baposter.cls liefert nichts, und tlmgr info baposter antwortet cannot find package baposter. Der einzige ähnliche Treffer ist xebaposter, eine XeLaTeX-Klasse für persische und lateinische Poster, also etwas anderes. baposter zu verwenden bedeutet daher, es von CTAN von Hand zu installieren; bevor man diesen Preis zahlt, ist ein Versuch mit tikzposter schneller.

Was vor der Übergabe an die Druckerei zu prüfen ist

Drei Prüfungen genügen. Seitengröße: die Zeile Page size: von pdfinfo. Schrifteinbettung: in pdffonts muss jede Zeile in der Spalte emb ein yes zeigen. Bildauflösung: 150 dpi in Endgröße reichen praktisch, 300 dpi bei einem Poster, das aus der Nähe gelesen wird. pdffonts auf einem mit pdflatex gebauten Poster zeigt Type-1-Schriften unter Subset-Namen wie PWNZYL+CMB10, mit yes unter emb und sub. Ein einziges no dort bedeutet, dass der RIP der Druckerei eine andere Schrift einsetzen könnte.

Es gibt noch eine Grenze – selten erreicht, aber dann verwirrend. TeXs größte Länge beträgt 16383,99998 pt, rund 5,75 m. Mit \setlength geprüft, geht 16383,99998 pt unverändert durch, während 577 cm mit ! Dimension too large. scheitert. Die 3370 pt eines A0 liegen weit darunter, ebenso die 8503,94 pt eines beamerposter von zwei mal drei Metern. Wer aber einen sechs Meter breiten Messewand-Hintergrund als eine einzige Seite setzen will, stößt an diese Mauer. Die übliche Antwort: in halber Größe setzen und beim Druck um 200 % vergrößern lassen.

  • Ein vorhandener beamer-Foliensatz soll weiterverwendet werdenbeamerposter. size und scale entscheiden fast alles
  • Schnell ein gepflegtes Aussehentikzposter. Neun Themes und acht Farbstile, aber \innerblock meiden
  • Das Layout soll selbst in der Hand bleiben, oder es gibt eine alte Quellea0poster, dabei stets per pdfinfo prüfen, ob die Papiergröße im PDF angekommen ist
  • Jemand hat baposter empfohlen → es ist nicht in TeX Live 2024. Von CTAN von Hand installieren oder zu tikzposter wechseln