Beamer

Le manuel de beamer ne donne qu'une règle brutale pour préparer un exposé : au plus un frame par minute. Ce même manuel raconte que Till Tantau a écrit la première version de la classe LaTeX en février 2003 pour sa propre soutenance de thèse, et qu'avant cela il ne s'agissait que d'« une petite collection privée de macros facilitant l'usage de la classe seminar » ; un mois plus tard, sur la suggestion de collègues, il la déposait sur CTAN. Cette page ne traite pas de l'écriture des frames — la page consacrée à la classe beamer s'en charge. Elle traite de tout ce qui se trouve entre un fichier .tex terminé et une salle équipée d'un vidéoprojecteur : passer le diaporama en 16:9 avec aspectratio=169, supprimer les symboles de navigation que personne n'a demandés, obtenir des numéros de diapositive qui restent honnêtes une fois les diapositives de secours ajoutées, les diapositives de titre de section, les notes que vous seul voyez, et que faire quand un diaporama de 121 pages met trois secondes et demie par passe.

Passer beamer en 16:9 avec aspectratio=169, et ce qu'est vraiment le défaut

Un mot suffit : \documentclass[aspectratio=169]{beamer}. Et le défaut reste toujours le 4:3 — quel que soit le vidéoprojecteur de la salle en 2026, beamer laissé tel quel donne du 4:3. Compilé avec beamer 3.71 tel que livré dans TeX Live 2024 et mesuré avec pdfinfo, le format par défaut sort à 362,835 × 272,126 pt (128 × 96 mm) et aspectratio=169 à 453,543 × 255,118 pt (160 × 90 mm). Ce qu'on oublie souvent, c'est que le 16:9 n'élargit pas seulement la diapositive : la hauteur passe de 96 mm à 90 mm. Un frame rempli jusqu'au bord inférieur en 4:3 débordera dès l'ajout de aspectratio=169. Le rapport d'aspect se décide donc au début, pas à la fin.

Option de classeDimensionsMesuré par pdfinfoRemarque
aspectratio=43128 × 96 mm362,835 × 272,126 ptle défaut ; sans option, c'est cela
aspectratio=169160 × 90 mm453,543 × 255,118 ptle standard actuel des projecteurs ; 6 mm de moins en hauteur
aspectratio=1610160 × 100 mm453,543 × 283,465 ptcorrespond à beaucoup d'écrans d'ordinateur portable
aspectratio=149140 × 90 mm396,85 × 255,118 ptun format large moins extrême
aspectratio=32135 × 90 mm382,677 × 255,118 pt3:2
aspectratio=141148,5 × 105 mm420,945 × 297,638 ptexactement A6 paysage — pdfinfo affiche même « A6 »
aspectratio=54125 × 100 mm354,331 × 283,465 pt5:4, pour les projecteurs anciens
aspectratio=2013140 × 91 mm396,85 × 257,953 pt20:13 — les chiffres sont le rapport

Il est utile de savoir comment ces dimensions parviennent réellement au PDF. beamer.cls transmet la largeur et la hauteur qu'il a calculées à geometry sous la forme papersize={...}, et c'est geometry qui réécrit \pdfpagewidth et \pdfpageheight. Cela compte plus qu'il n'y paraît. En LaTeX ordinaire, \documentclass[letterpaper]{article} produit tout de même un PDF A4 — mesuré à 595,276 × 841,89 pt — parce que le fichier pdftexconfig.tex de TeX Live a déjà posé \pdfpagewidth = 210 true mm et que les classes standard n'y touchent jamais. beamer refait lui-même cette surcharge et échappe donc au piège. Revers de la médaille : si le préambule bricole \pdfpagewidth à la main, seule l'arithmétique de beamer reste en arrière et les figures centrées dérivent. Mieux vaut ne pas y toucher.

latex
% decide this before you place a single figure
\documentclass[aspectratio=169]{beamer}

% inside a frame, always express sizes relative to the slide,
% never in absolute cm, so a later ratio change survives
\includegraphics[width=0.8\textwidth]{plot.pdf}
\includegraphics[height=0.6\textheight]{photo.jpg}

Une ligne dans le préambule suffit : \setbeamertemplate{navigation symbols}{}. Ces marques pâles ne sont pas un ornement mais un véritable jeu de liens assemblé à partir de six pièces. La définition de beamerouterthemedefault.sty se contente d'aligner \insertslidenavigationsymbol, \insertframenavigationsymbol, \insertsubsectionnavigationsymbol, \insertsectionnavigationsymbol, \insertdocnavigationsymbol et \insertbackfindforwardnavigationsymbol, chacun portant deux à quatre hyperliens. Compilez un diaporama d'un seul frame avec le thème default et comptez : le PDF porte 20 annotations /Link sur cette unique diapositive. Template vidé, on tombe à 0 ; en ne gardant que {\insertframenavigationsymbol}, à 4.

PièceCibles des liensNombre
\insertslidenavigationsymboldiapositive précédente et suivante, plus « aller à la page » du lecteur3
\insertframenavigationsymbolfin du frame précédent, début et fin du frame courant, début du suivant4
\insertsubsectionnavigationsymbolles quatre limites de sous-section, comme pour les frames4
\insertsectionnavigationsymbolles quatre limites de section4
\insertdocnavigationsymbolpremière et dernière page de la présentation2
\insertbackfindforwardnavigationsymbolles commandes de menu du lecteur GoBack, Find et GoForward3

Les garder ou non dépend de la durée de l'exposé. Les recommandations de beamer le disent : plus l'exposé est long, plus l'aide à la navigation est utile — un cours de quatre-vingt-dix minutes gagne à afficher une barre latérale situant l'auditoire, tandis qu'un sommaire dans une introduction de dix minutes paraît simplement ridicule. Concrètement : pour une communication de quinze minutes, supprimez-les (personne ne clique, et elles s'impriment sur le papier) ; pour un semestre de diapositives de cours, gardez-les (les étudiants relisent le PDF à leur bureau et veulent sauter à une section). Le réglage intermédiaire, ne garder que le défilement des frames, s'écrit {\insertframenavigationsymbol}. Notez enfin que certains thèmes, dont \usetheme{metropolis}, les suppriment déjà : si elles refusent de disparaître, soupçonnez d'abord le thème.

preamble
% remove all six symbols
\setbeamertemplate{navigation symbols}{}

% or keep only the frame-stepping pair
\setbeamertemplate{navigation symbols}{\insertframenavigationsymbol}

Afficher les numéros : \insertframenumber et \inserttotalframenumber

À la main, on écrit \insertframenumber/\inserttotalframenumber dans le gabarit footline ; mais si le thème imprime déjà un numéro en pied de page, il est plus sûr de choisir l'un des gabarits nommés fournis par beamer : \setbeamertemplate{page number in head/foot}[totalframenumber] donne « 3 / 12 » (beamerbaseauxtemplates.sty en définit trois — framenumber, totalframenumber et appendixframenumber). Ce qui piège, c'est que le numéro compte des frames, pas des pages PDF. Un frame contenant un \pause devient deux pages PDF, et pourtant le coin affiche le même « 3 / 3 » sur les deux. Que le numéro ne bouge pas quand on appuie sur la flèche n'est pas un bogue.

Le second piège : au premier passage, le total est faux. \inserttotalframenumber ne peut être connu qu'une fois tout le diaporama composé ; beamer écrit donc la réponse dans le fichier auxiliaire .nav — on y trouve la ligne \headcommand {\gdef \inserttotalframenumber {3}}. Supprimez .aux et .nav, lancez une seule fois, et le pied de page affiche les fractions cassées 2/1 et 3/1 ; le second passage a enfin donné 2/3 et 3/3. Compilez toujours deux fois un PDF de conférence : c'est la règle d'or de beamer. Ajoutez ensuite [noframenumbering] à la diapositive de titre et aux diapositives de secours pour que le total ne compte que l'exposé : un diaporama dont la première diapositive de contenu affichait « 2/3 » affichait « 1/2 » rien qu'en cessant de compter la page de titre. Pour donner à l'annexe son propre compte, placez \appendix et choisissez [appendixframenumber] : la partie principale affiche alors « 2/2 » et la diapositive de secours « 1/1 ».

latex
\documentclass[aspectratio=169]{beamer}
\usetheme{Madrid}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{page number in head/foot}[appendixframenumber]

\begin{document}
% the title page should not eat frame number 1
\begin{frame}[plain,noframenumbering]\titlepage\end{frame}

\begin{frame}{Results}\end{frame}

% everything after \appendix is counted separately
\appendix
\begin{frame}{Backup: full derivation}\end{frame}
\end{document}

Une diapositive de titre au début de chaque section : \AtBeginSection

Placez \AtBeginSection[]{...} dans le préambule et écrivez à l'intérieur un frame contenant \tableofcontents[currentsection]. Cela suffit à insérer, à chaque \section{...}, une diapositive « vous êtes ici ». Les crochets vides [] correspondent à l'argument utilisé pour les sections non numérotées (\section*) et signifient « ne rien faire là » ; sans eux, des diapositives de titre poussent aussi devant les titres de l'annexe. Donnez au frame inséré [noframenumbering,plain] : comme l'a montré la section précédente, le total reste honnête et le décor du thème disparaît. Plus fin encore, il y a \AtBeginSubsection[]{...} ; et pour couper un cours de quatre-vingt-dix minutes en deux moitiés, \part{...}, chaque partie disposant de son propre sommaire.

Ce dispositif a un effet secondaire qui coûte cinq minutes à qui l'ignore. \tableofcontents est composé à partir du fichier .toc : au premier passage, pas une seule diapositive de section n'apparaît. Mesuré sur un diaporama de deux sections et quatre frames, sans fichiers auxiliaires : le premier passage a donné 5 pages, le second 7. Avant de chercher « \AtBeginSection ne fonctionne pas », relancez la compilation.

preamble
% the [] argument is what runs for \section*, i.e. nothing
\AtBeginSection[]{%
  \begin{frame}[noframenumbering,plain]
    \tableofcontents[currentsection]
  \end{frame}%
}

% same idea one level down
\AtBeginSubsection[]{%
  \begin{frame}[noframenumbering,plain]
    \tableofcontents[currentsection,currentsubsection]
  \end{frame}%
}

Les diapositives pour la salle, les notes pour vous : deux voies vers l'écran présentateur

Deux voies s'offrent à vous. La première ne demande que beamer : \setbeameroption{show notes on second screen=right} rend le PDF lui-même deux fois plus large. Mesuré sur un diaporama d'un frame, la page sort à 725,669 × 272,126 pt (256 × 96 mm), le nombre de pages restant à 1 — une feuille unique dont la moitié gauche va à la salle et la moitié droite à l'orateur. Avec =bottom, c'est la hauteur qui double (362,835 × 544,252 pt). Aucun logiciel supplémentaire n'est requis, pourvu que la chaîne de projection sache rogner la moitié gauche. La seconde voie est le paquet pdfpc livré avec TeX Live 2024 (v0.7.1, 2023/10/21), qui range les notes et le minutage dans les métadonnées du PDF. Écrivez \usepackage[overridenote]{pdfpc} et le contenu de \note{...} devient une note pdfpc ; écrivez \pdfpcsetup{duration=20, lastminutes=3} et un compte à rebours de vingt minutes, avec alerte à trois minutes de la fin, voyage à l'intérieur du fichier.

Une réserve honnête : PDF Presenter Console lui-même ne fait pas partie de TeX Live. Le paquet pdfpc ne fournit que la moitié LaTeX qui écrit les métadonnées ; l'application à deux écrans (GPLv3+) s'installe à part. La réciproque est vraie aussi : dans une salle où l'on ne peut rien installer, le PDF large produit par show notes on second screen s'ouvre dans n'importe quel lecteur — en exporter un par précaution ne coûte rien. La rédaction des notes elles-mêmes — la syntaxe de \note{...} et l'insertion de pages de notes dédiées avec show notes — relève de la page consacrée aux documents à distribuer.

preamble
% route 1: one PDF, twice as wide, no extra software
\setbeameroption{show notes on second screen=right}

% route 2: notes and a countdown clock stored inside the PDF
\usepackage[overridenote]{pdfpc}
\pdfpcsetup{duration=20, lastminutes=3}

Quand un long diaporama compile lentement : \includeonlyframes et draft

Mettez [label=cur] sur le frame que vous modifiez et \includeonlyframes{cur} dans le préambule. Seul ce frame est émis ; le reste est toujours composé, puis jeté. Mesurons : un diaporama de 40 frames, chacun avec trois étapes d'overlay et un dessin TikZ, fait 121 pages et prend 3,51 s par passe sur ce Mac sous TeX Live 2024. Avec \includeonlyframes{cur}, on tombe à 3 pages et 1,39 s. Comme il faut deux passes, l'attente passe d'environ sept secondes à moins de trois. L'option de classe draft agit autrement : elle remplace l'en-tête, le pied et la barre latérale par de simples filets gris — la substitution est écrite noir sur blanc dans beamerbasemisc.sty. Le nombre de pages reste 121 et la passe a duré 2,76 s. draft pendant que vous ajustez la position des figures, \includeonlyframes quand vous voulez regarder quarante fois la mise en page d'une seule diapositive.

latex
% preamble: build only the frame you are working on
\includeonlyframes{cur}

% body: the label must match
\begin{frame}[label=cur]{The slide I am fighting with}
  \includegraphics[width=\textwidth]{big-figure.pdf}
\end{frame}

Le PDF projeté n'est pas le PDF distribué : export et impression

N'imprimez pas le PDF de l'exposé tel quel. La raison tient aux dimensions : une diapositive 16:9 mesure 160 × 90 mm et une A4 210 × 297 mm ; une diapositive par feuille laisse donc les deux tiers du papier blancs — et un frame comportant trois \pause est déjà devenu quatre pages, ce qui transforme un exposé d'une demi-heure en une brique de 120 feuilles. La bonne réponse consiste à fabriquer un second PDF avec \documentclass[handout]{beamer} et pgfpages, ce que détaille la page consacrée aux documents à distribuer. Si vous préférez ne pas toucher au source, pdfjam est livré avec TeX Live et fait le travail en post-traitement : pdfjam --nup 2x2 --frame true --paper a4paper --landscape a placé deux diapositives mesurées sur une seule page A4 paysage (841,89 × 595,276 pt).

terminal
# four slides to an A4 sheet, without touching the source
pdfjam --nup 2x2 --frame true --paper a4paper --landscape \
       --outfile talk-4up.pdf talk.pdf

# check what you actually produced before you print 40 copies
pdfinfo talk-4up.pdf | grep -E "Pages|Page size"
  • Verrouiller d'abord le rapport d'aspectaspectratio=169 ajoute de la largeur mais réduit aussi la hauteur de 96 mm à 90 mm. Le changer tard fait déborder tous les frames bien remplis.
  • Toujours compiler deux fois — le total des frames comme les diapositives de titre de section passent par .nav et .toc ; la première passe affiche des numéros cassés du type 2/1.
  • [noframenumbering] sur le titre et les diapositives de secours — le total ne compte alors que l'exposé. Pour une annexe autonome, \appendix et [appendixframenumber].
  • Pour une communication de quinze minutes, supprimer la navigation — une ligne, \setbeamertemplate{navigation symbols}{}. Pour un cours long, la conserver.
  • Arriver avec trois PDF — l'exposé, une copie de secours produite avec show notes on second screen, et le document à distribuer. Le troisième est traité sur la page dédiée.
  • Vérifier que les polices sont incorporées — passer pdfinfo et pdffonts sur le fichier avant de le copier sur la clé USB.