Documents à distribuer

L'exposé s'achève, quelqu'un demande « tu peux m'envoyer les diapositives ? », et vous transférez le fichier que vous venez de projeter. Ce qui arrive dans sa boîte est un PDF de 120 pages où le même schéma revient quatre fois — une figure dévoilée par \pause est une révélation progressive à l'écran et rien qu'une redite sur le papier. La classe beamer de LaTeX possède une option de classe qui n'existe que pour ce problème : handout. Elle aplatit tous les overlays et rend à un frame sa page unique — à la mesure, un diaporama de deux frames à trois étapes chacun est passé de 6 pages à 2. Cette page traite de handout, des notes d'orateur écrites avec \note, de la mise de quatre diapositives sur une feuille avec pgfpages, et d'une tout autre voie : distribuer l'exposé sous forme de document.

\documentclass[handout]{beamer} : aplatir les overlays

Il suffit d'ajouter un mot aux options de classe. Écrivez \documentclass[handout,aspectratio=169]{beamer} et \pause comme \item<2-> cessent d'agir ; chaque frame devient exactement une page. À la mesure : un diaporama de deux frames — l'un avec deux \pause, l'autre avec une liste itemize en \item<1->, <2-> et <3-> — donnait 6 pages en mode normal et 2 pages avec handout. Les dimensions de page ne bougent pas (362,835 × 272,126 pt dans les deux cas). Sans changer un caractère de contenu, on tire deux PDF du même .tex. En pratique, le montage le plus sûr est un second fichier de trois lignes qui fixe la classe avec handout puis appelle le corps par \input.

Voici le piège qui abîme discrètement les documents distribués. handout ne réduit pas un overlay à son état final : il imprime le contenu de chaque étape, les unes par-dessus les autres. Compilez en mode handout un frame contenant \only<1>{ALPHA} et \only<2>{BRAVO} : la page unique obtenue porte à la fois ALPHA et BRAVO. L'astuce courante consistant à remplacer une partie de formule avec \only juxtapose donc l'avant et l'après dans le document. Le remède consiste à nommer le mode dans la spécification d'overlay. \only<2| handout:1>{...} signifie « diapositive 2 dans l'exposé, diapositive 1 dans le document », donc à afficher ; \item<2-| handout:0> signifie « jamais dans le document ». Les frames entiers se commutent de même : \begin{frame}<handout:0> retire un frame du document et \begin{frame}<beamer:0> le réserve au document — à la mesure, un diaporama de trois frames utilisant les deux a produit exactement 2 pages dans chaque mode, avec des contenus différents.

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{...} n'imprime rien par défaut : il faut \setbeameroption{show notes}

Écrivez \note{mentionner le financement ici} dans un frame : par défaut, le PDF ne change absolument pas. À la mesure, ajouter \note à deux frames sur trois laissait la sortie à trois pages. C'est voulu : beamer se contente de mémoriser la note. Pour la faire sortir, on déclare \setbeameroption{...} dans le préambule. Sur ce même diaporama de trois frames, show notes a produit 5 pages (les trois diapositives, plus une page de notes dédiée après chaque frame qui en portait une), show only notes 2 pages (les seules notes) et show only slides with notes 4 pages (les seuls frames porteurs de notes, chacun avec la sienne). Un hide notes après un show notes ramène à trois pages — basculer cette ligne est plus sûr que de commenter du code quelques minutes avant de monter sur scène.

Ligne du préambuleCe qui sortMesuré sur un diaporama de 3 frames
(none)diapositives seules ; \note est mémorisé mais jamais imprimé3 pages
\setbeameroption{show notes}les diapositives, chacune suivie de sa page de notes5 pages
\setbeameroption{show only notes}les seules pages de notes — un script à lire2 pages
\setbeameroption{show only slides with notes}seulement les frames porteurs d'une note, avec leur note4 pages
\setbeameroption{hide notes}annule un show notes antérieur ; l'interrupteur avant l'exposé3 pages
\setbeameroption{show notes on second screen=right}nombre de pages inchangé ; chaque page s'élargit à deux écrans3 pages à 725,669 × 272,126 pt

Il vaut la peine de regarder ce que contient une page de notes. La page produite par show notes porte en haut une miniature de la diapositive et la date, votre texte en dessous. Des \note{...} successifs deviennent des paragraphes ; pour une énumération, \note[item]{...} donne une liste numérotée — à la mesure, un frame comportant deux \note[item] a produit une page affichant « 1. first bullet » et « 2. second bullet ». Autre chose à savoir : un \note{...} isolé placé après \end{frame} devient une page de notes autonome, rattachée à aucun frame, exactement l'endroit d'un rappel plus long comme « avant la section suivante, penser à ces trois points ». Contrairement au contenu des diapositives, les notes ne cassent jamais la mise en page, quelle qu'en soit la longueur. C'est le seul outil de cette page dont on ne peut pas abuser.

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}

Quatre diapositives par feuille : pgfpages et \pgfpagesuselayout

Chargez \usepackage{pgfpages} et écrivez \pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]. À la mesure, cela a transformé un diaporama de cinq frames en mode handout en deux pages A4 portrait (595,276 × 841,89 pt). Avec 2 on 1, on obtient trois pages ; avec [a4paper,landscape,border shrink=5mm], de l'A4 paysage (841,89 × 595,276 pt). border shrink indique de combien chaque diapositive est réduite pour laisser du blanc, ce qu'on veut pour une marge de reliure ou pour un lecteur qui annote. pgfpages est l'œuvre de Till Tantau lui-même, auteur de beamer comme de PGF/TikZ, et sa ligne de version affiche toujours \ProvidesPackage{pgfpages}[2011/01/05 ver 0.02] — à lire comme le signe d'un paquet stabilisé de longue date.

En comptant dans pgfpages.sty, on trouve neuf mises en page : 2 on 1, 4 on 1, 6 on 1, 8 on 1, 16 on 1, plus resize to (mettre une diapositive à l'échelle d'un autre format), rounded corners, two screens with lagging second et two screens with optional second. À noter : il n'existe pas de 3 on 1. D'où la question qui revient parfois, « 3 on 1 provoque une erreur » : la mise en page à trois diapositives est ajoutée par handoutWithNotes, objet de la section suivante. Une remarque pratique — 4 on 1 sur A4 portrait dispose les diapositives en 2 × 2, si bien qu'un diaporama 16:9 laisse des marges visibles à gauche et à droite. En 16:9, ajoutez landscape ou passez au 2 on 1 en portrait : les deux remplissent mieux la feuille.

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]

Une colonne de notes à côté de chaque diapositive : handoutWithNotes

Ajouter \usepackage{handoutWithNotes} enrichit pgfpages de mises en page réservant de la place pour les notes. TeX Live 2024 embarque la v1.3 (2022/02/22, maintenue par Marei Peischl et Guido Diepen), et le .sty déclare six mises en page : 1 on 1 with notes, 2 on 1 with notes, 3 on 1 with notes, 4 on 1 with notes, plus les variantes paysage des deux premières. À la mesure, un diaporama de trois frames avec \pgfpagesuselayout{3 on 1 with notes}[a4paper] et \setbeameroption{show notes} tenait sur deux pages A4 portrait. Oublier la ligne show notes est l'accident habituel : la colonne de notes sort vide. Pour un support de cours, ce n'est pas nécessairement un défaut : la colonne vide sert d'espace d'annotation aux étudiants, et la mise en page reste donc utile même sans le moindre \note.

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

Distribuer la même source comme un document : beamerarticle

Parfois, ce qu'il faut distribuer n'est pas une copie des diapositives mais quelque chose de réellement lisible. beamer fournit beamerarticle pour cela : mettez \usepackage{beamerarticle} dans un fichier \documentclass{article} et les environnements frame s'écoulent comme du texte courant. À la mesure, un diaporama de deux frames compilé côté article a donné une page A4 portant le contenu des deux frames en prose continue. \pause est ignoré, et aucun cadre de diapositive ni thème n'est appliqué. C'est le mécanisme derrière la promesse de beamer : faire des diapositives à partir de notes de cours et des notes de cours à partir de diapositives ; beamer livre d'ailleurs beamerexample-lecture-beamer-version.pdf et beamerexample-lecture-print-version.pdf, construits depuis la même source. Pour un texte destiné à une seule des deux versions, entourez-le de \mode<presentation>{...} ou \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.}

Produire toutes les variantes sans modifier la source : \PassOptionsToClass et -jobname

Réécrire la ligne \documentclass et compiler trois fois : c'est le mode opératoire qui finit par vous faire projeter la version handout cinq minutes avant de parler. Passez plutôt l'option en ligne de commande et la source ne bouge pas d'un caractère : pdflatex -jobname=slides-handout "\PassOptionsToClass{handout}{beamer}\input{slides.tex}". À la mesure, le même slides.tex donnait 3 pages en temps normal, et cette seule ligne a produit un slides-handout.pdf de 2 pages (453,543 × 255,118 pt dans les deux cas). La moitié importante, c'est -jobname : sans lui, les deux compilations se disputent les mêmes .aux et .nav, et les totaux de frames comme le sommaire s'emmêlent. Les notes fonctionnent pareil, car beamer possède une option de classe notes ; les valeurs acceptées par beamer.cls sont hide, show, only et onlyslideswithnotes. Ainsi \setbeameroption{show only slides with notes} s'écrit en un seul mot : \documentclass[notes=onlyslideswithnotes]{beamer} — les espaces disparaissent dans cette graphie.

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

Quand cela part vraiment sur papier : feuilles, toner et vérification

Avant d'imprimer, regardez la couleur de fond du thème. Certains thèmes de couleur de beamer sont sombres : albatross déclare dans beamercolorthemealbatross.sty \setbeamercolor*{normal text}{fg=yellow!50!white,bg=blue!50!black} — non pas du noir sur blanc mais du jaune pâle sur bleu profond. Tirez-en quarante exemplaires et le papier gondole, le toner s'épuise, et le résultat reste difficile à lire. Pour la version distribuée, revenez à \usecolortheme{default} (simplement fg=black,bg=white) ou basculez par mode, avec par exemple \mode<handout>{\usecolortheme{default}}. Cela vaut aussi pour un thème comme beetle, dont le fond est bg=black!40, un gris à 40 %. Côté papier, laisser environ 5 mm de border shrink absorbe à la fois la marge de reliure et ce que le copieur rogne. Enfin, passez pdfinfo sur le fichier avant d'appuyer sur imprimer : l'échec le plus fréquent consiste à découvrir que le prétendu A4 mesure toujours 128 × 96 mm.

  • L'exposé — overlays intacts, \documentclass[aspectratio=169]{beamer}. Le fichier que l'on projette.
  • Le document papier\documentclass[handout]{beamer} avec pgfpages 4 on 1. Partout où figure \only, ne pas oublier la partie handout: de la spécification.
  • Votre propre script\setbeameroption{show only notes}. Imprimer les seules notes et les poser sur le pupitre.
  • Une feuille de travail pour l'auditoire3 on 1 with notes de handoutWithNotes. Sans show notes, la colonne sort vide, ce qui se révèle utilisable aussi.
  • Quelque chose à vraiment lire\documentclass{article} et beamerarticle, quand le document doit être de la prose plutôt que des diapositives.
  • Piège commun — ces compilations ne doivent pas partager .aux ni .nav. Donnez à chaque sortie son propre nom de travail, via un répertoire séparé ou -jobname.