Handouts

You finish a talk, somebody says "could you send me the slides", and you forward the file you just projected. What lands in their inbox is a 120-page PDF in which the same diagram appears four times over — a figure revealed by \pause is a stepwise reveal on screen and nothing but duplication on paper. The beamer class in LaTeX has a class option that exists for precisely this problem: handout. It collapses every overlay and puts one frame back on one page — measured, a deck of two frames with three overlay steps each went from 6 pages to 2. This page covers handout, the speaker notes you write with \note, putting four slides on a sheet with pgfpages, and the other route entirely: handing out the talk as a document.

\documentclass[handout]{beamer}: collapsing the overlays

You add one word to the class options. Write \documentclass[handout,aspectratio=169]{beamer} and \pause and \item<2-> alike stop doing anything; each frame becomes exactly one page. Measured: a deck of two frames — one containing two \pause marks, one an itemize list with \item<1->, <2-> and <3-> — came to 6 pages in normal mode and 2 pages with handout added. The page dimensions are untouched (362.835 × 272.126 pt either way). Without changing a character of content you get two PDFs out of the same .tex. In practice the safest arrangement is a second, three-line file that sets the class with handout and then \inputs the body.

Here is the trap that quietly ruins handouts. handout does not collapse an overlay to its final state — it prints the content of every step, on top of each other. Compile a frame holding \only<1>{ALPHA} and \only<2>{BRAVO} in handout mode and the single page that comes out carries both ALPHA and BRAVO. The familiar trick of swapping part of a formula with \only therefore puts the before and the after side by side in the handout. The fix is to name the mode inside the overlay specification. \only<2| handout:1>{...} means "slide 2 in the talk, slide 1 in the handout", i.e. show it; \item<2-| handout:0> means "never in the handout". Whole frames switch the same way: \begin{frame}<handout:0> drops a frame from the handout and \begin{frame}<beamer:0> puts one in the handout only — measured, a three-frame deck using both produced exactly 2 pages in each mode, with different content in each.

latex
\documentclass[handout,aspectratio=169]{beamer}

% WRONG in a handout: both versions of the formula are printed
\only<1>{$x^2 + y^2$}
\only<2>{$x^2 + y^2 = r^2$}

% RIGHT: say what each mode should do
\only<1| handout:0>{$x^2 + y^2$}   % talk only
\only<2| handout:1>{$x^2 + y^2 = r^2$}  % talk step 2, handout step 1

% frame-level switches
\begin{frame}<handout:0>{Live demo}   % not in the handout
\begin{frame}<beamer:0>{Full derivation}  % handout only

\note{...} prints nothing by default: you need \setbeameroption{show notes}

Write \note{mention the funding here} inside a frame and by default the PDF does not change at all. Measured: adding \note to two of three frames left the output at three pages. That is by design — beamer only stores the note. To get it out you declare \setbeameroption{...} in the preamble. On the same three-frame deck, show notes produced 5 pages (the three slides, plus a dedicated note page after each frame that had one), show only notes produced 2 pages (the notes alone), and show only slides with notes produced 4 pages (only the frames that carry notes, each with its note). Writing hide notes after a show notes puts you back at three pages — flipping that one line is safer than commenting things out minutes before you go on.

Line in the preambleWhat comes outMeasured on a 3-frame deck
(none)slides only; \note is stored but never printed3 pages
\setbeameroption{show notes}slides, each followed by its own note page5 pages
\setbeameroption{show only notes}the note pages alone — a script to read from2 pages
\setbeameroption{show only slides with notes}only the frames that carry a note, each with its note4 pages
\setbeameroption{hide notes}cancels an earlier show notes; the switch to flip before the talk3 pages
\setbeameroption{show notes on second screen=right}page count unchanged; each page widens to two screens3 pages at 725.669 × 272.126 pt

It is worth looking at what a note page contains. The page produced by show notes carries a miniature of the slide and the date across the top, with your text below. Consecutive \note{...} commands become paragraphs; for a list, \note[item]{...} gives you a numbered list — measured, a frame with two \note[item] commands produced a note page reading "1. first bullet" and "2. second bullet". The other thing worth knowing is a bare \note{...} placed after \end{frame}: it becomes a free-standing note page attached to no frame, which is where a longer reminder belongs — "before the next section, remember these three things". Unlike slide content, notes never break the layout however much you write. This is the one tool here you cannot overuse.

latex
\documentclass{beamer}
\setbeameroption{show notes}   % swap for "hide notes" before you present

\begin{document}
\begin{frame}{Results}
  Body of the slide.
  \note[item]{mention the sample size}
  \note[item]{do not read the table aloud}
\end{frame}

% a standalone note page, bound to no frame
\note{Before section 3: water, timer, ask about questions.}
\end{document}

Four slides per sheet: pgfpages and \pgfpagesuselayout

Load \usepackage{pgfpages} and write \pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]. Measured, that turned a five-frame deck in handout mode into two A4 portrait pages (595.276 × 841.89 pt). Switch to 2 on 1 and it becomes three pages; pass [a4paper,landscape,border shrink=5mm] and you get A4 landscape (841.89 × 595.276 pt). border shrink is how much each slide is scaled down to leave white space, which is what you want for a binding edge or for a reader who takes notes. pgfpages is the work of Till Tantau himself, the author of both beamer and PGF/TikZ, and its version string still reads \ProvidesPackage{pgfpages}[2011/01/05 ver 0.02] — best read as a package that settled down a long time ago.

Counting inside pgfpages.sty there are nine layouts: 2 on 1, 4 on 1, 6 on 1, 8 on 1, 16 on 1, plus resize to (scale one slide onto a different sheet), rounded corners, two screens with lagging second and two screens with optional second. Note that there is no 3 on 1. That is why the occasional question about "3 on 1 gives an error" turns up: the three-slide layout is added by handoutWithNotes, which the next section covers. One practical note — 4 on 1 on A4 portrait arranges the slides 2 × 2, so a 16:9 deck leaves visible margins left and right. With 16:9, either add landscape or use 2 on 1 in portrait, both of which fill the sheet better.

latex
% the whole handout build, in five lines
\documentclass[handout]{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]

% for a 16:9 deck, turn the sheet instead
\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm]

% one slide per sheet, scaled up to fill A4
\pgfpagesuselayout{resize to}[a4paper]

A note column beside each slide: handoutWithNotes

Adding \usepackage{handoutWithNotes} extends pgfpages with layouts that reserve room for notes. TeX Live 2024 carries v1.3 (2022/02/22, maintained by Marei Peischl and Guido Diepen), and the .sty declares six layouts: 1 on 1 with notes, 2 on 1 with notes, 3 on 1 with notes, 4 on 1 with notes, plus landscape variants of the first two. Measured, a three-frame deck with \pgfpagesuselayout{3 on 1 with notes}[a4paper] and \setbeameroption{show notes} fitted onto two A4 portrait pages. Forgetting the show notes line is the usual accident — the note column comes out blank. For lecture handouts that is not necessarily wrong: the empty column doubles as ruled space for students to write in, so the layout is useful even when you have written no \note at all.

latex
\documentclass[handout]{beamer}
\usepackage{pgfpages}
\usepackage{handoutWithNotes}
\pgfpagesuselayout{3 on 1 with notes}[a4paper,border shrink=5mm]
\setbeameroption{show notes}   % without this the note column is empty

Handing out the same source as a document: beamerarticle

Sometimes the thing to hand out is not a copy of the slides but something you can actually read. beamer provides beamerarticle for that: put \usepackage{beamerarticle} into a \documentclass{article} file and the frame environments flow as ordinary body text. Measured, a two-frame deck compiled on the article side came out as one A4 page carrying the content of both frames as continuous prose. \pause is ignored, and no slide frame or theme is applied. This is the mechanism behind beamer's claim that you can make slides out of lecture notes and lecture notes out of slides; beamer itself ships beamerexample-lecture-beamer-version.pdf and beamerexample-lecture-print-version.pdf, both built from the same source, as proof. To write text that appears in only one of the two, wrap it in \mode<presentation>{...} or \mode<article>{...}.

latex
% talk.tex holds only the frames; two wrappers build two documents

% slides.tex
\documentclass[aspectratio=169]{beamer}
\input{talk}

% notes.tex
\documentclass[a4paper,11pt]{article}
\usepackage{beamerarticle}
\input{talk}

% inside talk.tex, when the two versions must differ
\mode<presentation>{Three points.}
\mode<article>{The argument rests on three points, each of which is developed below.}

Building every variant without editing the source: \PassOptionsToClass and -jobname

Editing the \documentclass line and compiling three times is the workflow that eventually gets you projecting the handout version five minutes before you speak. Pass the option on the command line instead and the source never changes: pdflatex -jobname=slides-handout "\PassOptionsToClass{handout}{beamer}\input{slides.tex}". Measured, the same slides.tex gave 3 pages normally and this one line produced a 2-page slides-handout.pdf (both 453.543 × 255.118 pt). The -jobname is the important half — without it the two builds fight over the same .aux and .nav, and the frame totals and contents get crossed. Notes work the same way, because beamer has a class option notes; the values beamer.cls accepts are hide, show, only and onlyslideswithnotes. So \setbeameroption{show only slides with notes} can be written as the single word \documentclass[notes=onlyslideswithnotes]{beamer} — note that the spaces disappear in that spelling.

terminal
# the talk itself
pdflatex -jobname=slides slides.tex

# the handout, from the identical unedited source
pdflatex -jobname=slides-handout \
  "\PassOptionsToClass{handout}{beamer}\input{slides.tex}"

# your own script: the note pages only
pdflatex -jobname=slides-notes \
  "\PassOptionsToClass{notes=only}{beamer}\input{slides.tex}"

# remember: every one of these needs two runs for .nav and .toc

When it actually goes on paper: sheets, toner and a last check

Before printing, look at the theme's background colour. Some of beamer's colour themes are dark: albatross declares \setbeamercolor*{normal text}{fg=yellow!50!white,bg=blue!50!black} in beamercolorthemealbatross.sty — not black on white but pale yellow on deep blue. Run forty copies of that and the paper curls, the toner runs out and the result is hard to read anyway. For the handout build, either go back to \usecolortheme{default} (which is plain fg=black,bg=white) or switch by mode with something like \mode<handout>{\usecolortheme{default}}. The same applies to a theme such as beetle, whose background is bg=black!40, a 40 % grey. On the paper side, leaving about 5 mm of border shrink absorbs both the binding edge and whatever the copier trims. And run pdfinfo over the file before you press print — the commonest failure is discovering that what you assumed was A4 is still 128 × 96 mm.

  • The talk — overlays intact, \documentclass[aspectratio=169]{beamer}. The one file you project.
  • The paper handout\documentclass[handout]{beamer} with pgfpages 4 on 1. Wherever you used \only, remember the handout: part of the specification.
  • Your own script\setbeameroption{show only notes}. Print the notes alone and put them on the lectern.
  • A worksheet for the audience3 on 1 with notes from handoutWithNotes. Forget show notes and the column comes out blank, which is itself usable.
  • Something to actually read\documentclass{article} plus beamerarticle, for when the handout should be prose rather than slides.
  • Common pitfall — these builds must not share .aux and .nav. Give each output its own job name, via a separate directory or -jobname.