Posters (beamerposter/tikzposter/a0poster)

The commonest accident when building an A0 poster in LaTeX is discovering at the print shop that the file is A4. On TeX Live 2024 that is literally what happens: push the a0poster class through pdflatex and pdfinfo reports the paper as 595.276 × 841.89 pt, which is A4. Aim at the same A0 with beamerposter or tikzposter and both come out correctly at 2383.94 × 3370.39 pt (A0). This page compares the three routes to a conference poster — beamerposter, which reuses beamer; tikzposter, a dedicated TikZ-based class; and a0poster, which dates from 1997 — compiling each and measuring the result with pdfinfo. It closes with what to check before handing the file to a printer.

Poster page size: check it with pdfinfo

Before anything else, look at the dimensions of the PDF you actually produced. Run pdfinfo poster.pdf and the Page size: line reports them. A0 is 2383.94 × 3370.39 pt, which converts to 84.1 × 118.9 cm. If that line still says A4 (595.276 × 841.89 pt), the problem is not your class option but that the page size never reached the PDF. You cannot spot this by eye: a poster is always shown shrunk on screen, so one squeezed onto A4 simply looks like a poster displayed small.

Class or packagePaper under pdflatex (measured)How the size is set
beamerposter2383.94 × 3370.39 pt (A0 portrait)Written straight into the PDF from size=a0 and orientation
tikzposter2383.94 × 3370.39 pt (A0 portrait)a0paper is handed to geometry, so it reaches the PDF
a0poster595.276 × 841.89 pt (A4)Goes through a PostScript \special, which pdflatex ignores
baposterCannot be loadedNot present in TeX Live 2024 (see below)

Using beamerposter: really just size and scale

If you already know beamer, beamerposter is the shortest route. Put \usepackage[size=a0,scale=1.4,orientation=portrait]{beamerposter} on top of \documentclass[final]{beamer} and your blocks, columns, themes and colour themes all carry over at poster scale. There is no new notation to learn. The [final] option collapses overlays into a single page, which matters when you are recycling a deck that still contains \pause or \only<2>.

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 is the font magnification, and this is where beamerposter is clever: a base factor is pre-normalised for each paper size. Reading beamerposter.sty, a0 and a0b are 1.0, a1 is 0.70710678, a2 is 0.5, a3 is 0.35355339 and a4 is 0.25. That sequence is exactly the powers of 1/√2, matching the way the A series halves its area at each step — so the side length shrinks by 1/√2. The result is that scale=1.0 looks the same size on any paper: rebuild an A1 poster as A0 and the text reads at the same apparent size. Measured, a0 with scale=1.0 gives \normalsize of 24.88 pt on a 30 pt baseline, and scale=1.4 gives 34.83 pt on 42 pt.

Paper comes from size=a0b a0 a1 a2 a3 a4 custom, with orientation=portrait or landscape alongside. Measured, orientation=landscape swapped the dimensions to 3370.39 × 2383.94 pt and size=a1 gave 1683.78 × 2383.94 pt (A1), exactly as expected. With size=custom you pass width and height as plain numbers in centimetres: width=200,height=300 produced 5669.29 × 8503.94 pt, a two-by-three-metre banner straight out of the box. The beamerposter in TeX Live 2024 is v1.13, dated 23 April 2018.

tikzposter: a dedicated class where the theme decides the look

tikzposter was written for posters from the start. You declare \documentclass[25pt,a0paper,portrait,margin=10mm]{tikzposter}, write the body as \block{Title}{Body} and distribute it with \begin{columns} and \column{0.5}. None of beamer's vocabulary applies. The look changes wholesale with a single \usetheme{...}, and the version in TeX Live 2024 carries nine of them: Autumn, Basic, Board, Default, Desert, Envelope, Rays, Simple and Wave. All nine were compiled here, and every one produced an A0 PDF without an error.

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}

The look is layered four deep: besides \usetheme there are \usecolorstyle (eight of them, oddly named after countries — Australia, Britain, Default, Denmark, Germany, Russia, Spain, Sweden), \usecolorpalette (five) and \useblockstyle (seven: Basic, Corner, Default, Envelope, Minimal, Slide, TornOut). One documented command, however, does not work in the tikzposter v2.0 (15 January 2014) shipped with TeX Live 2024. \innerblock dies with ! TeX capacity exceeded, sorry [grouping levels=255]. — with any theme, and even after calling \useinnerblockstyle first — and no PDF is produced at all. When you want a nested box, use \coloredbox{...}, which came through the same setup cleanly.

The other trap is tikzfigure. The environment only sets up a center and a caption counter — it does not open a tikzpicture for you. Write a bare \draw and add a caption in the optional argument, and you get ! LaTeX Error: There's no line here to end. The cause is line 818 of tikzposter.cls, which puts \\[10pt] just before the caption: if the body ended in vertical mode, that \\ has no line to end. Dropping the caption makes the error go away, but the right fix is to open a tikzpicture inside, as in the example above. Font size comes from the class options 12pt, 14pt, 17pt, 20pt and 25pt; with 25pt the measured \normalsize was 24.88 pt, and with 20pt it was 20.74 pt.

Why a0poster comes out A4, and two ways to get a real A0 PDF

a0poster produces A4 because it communicates the paper size through a PostScript \special. Compile it on TeX Live 2024 and the log fills with Non-PDF special ignored!, followed by <special> header=./a0header.ps and <special> papersize=83.96cm,118.82cm. pdfTeX discards both, so the paper stays at article's default A4. The class really does write a fragment of PostScript called a0header.ps into your working directory at compile time, containing PageSize [2380 3368] and setpagedevice. The program meant to read it is dvips. This is v1.22b, dated 31 January 2004, by Gerlinde Kettl and Matthias Weiser and worked on from 1997 — a design from the height of the DVI era, preserved intact.

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)

There are two ways out. The intended route is latex then dvips then ps2pdf; measured, the .ps carried %%DocumentPaperSizes: a0 at the top and the resulting PDF came out 2384 × 3370 pt. The other is to stay with pdflatex and copy the class's own dimensions into the PDF yourself, by putting \pdfpagewidth=\paperwidth and \pdfpageheight=\paperheight in the preamble; that yielded 2379.97 × 3368.13 pt. Note also that a bare \documentclass{a0poster} defaults to landscape,a0b,final, and a0b is not ISO A0 but an oversized 119 × 87 cm sheet. If the paper matters, say [a0,portrait] explicitly. As for type, \normalsize is redefined to 24.88 pt, and the class adds its own \veryHuge (74.3 pt), \VeryHuge (89.16 pt) and \VERYHuge (107 pt). It provides no column or block machinery of its own, so you lay the content out yourself with the multicols environment from multicol, or with minipage.

baposter is not in TeX Live 2024

baposter, which arranges content as a grid of boxes, is named in a great many poster tutorials — but it is not in TeX Live 2024. kpsewhich baposter.cls returns nothing, and tlmgr info baposter answers cannot find package baposter. The only near-match is xebaposter, a XeLaTeX class for Persian and Latin posters, which is a different thing. Using baposter therefore means installing it from CTAN by hand, and before paying that price it is quicker to try tikzposter.

What to check before handing the file to a printer

Three checks are enough. Page size: the Page size: line from pdfinfo. Font embedding: every row of pdffonts must show yes in the emb column. Image resolution: 150 dpi at final size is fine in practice, 300 dpi for a poster read close up. Running pdffonts on a poster built with pdflatex shows Type 1 fonts under subset names such as PWNZYL+CMB10, with yes under both emb and sub. A single no there means the print shop's RIP may substitute a different face.

There is one more limit — rarely hit, but bewildering when you do. TeX's largest dimension is 16383.99998 pt, about 5.75 m. Tried with \setlength, 16383.99998 pt goes through untouched while 577 cm fails with ! Dimension too large. A0's 3370 pt is far below it, and so is the 8503.94 pt of a two-by-three-metre beamerposter. But set out to typeset a six-metre backdrop for an exhibition booth as a single page and you will meet this wall. The standard answer is to build it at half size and have the printer enlarge by 200%.

  • You want to reuse an existing beamer deckbeamerposter. size and scale decide almost everything
  • You want a polished look quicklytikzposter. Nine themes and eight colour styles, but stay away from \innerblock
  • You want to control the layout yourself, or you have an existing sourcea0poster, but always confirm with pdfinfo that the paper size reached the PDF
  • Someone recommended baposter → it is not in TeX Live 2024. Install it from CTAN by hand, or move to tikzposter