Faire des présentations en LaTeX avec beamer

Introduction

Pourquoi faire une présentation en LaTeX plutôt qu'avec Powerpoint ou Impress?

Les arguments sont essentiellement les mêmes que pour LaTeX vs Word. En faveur de latex, entre autres, la rigueur du rendu, la programmabilité, la portabilité, la possibilité d'entrer des formules (combien de gens voit-on convertir en images des formules tapées en TeX, pour les inclure dans du powerpoint...), sont tout aussi utiles pour une présentation que pour un rapport. D'un autre côté, le fait que la préparation du document n'est pas faite de manière visuelle est sans doute plus génante pour des transparents, mais pas tant que ça en fait. Enfin, Powerpoint propose tout plein d'effets graphiques (animations...), domaine dans lequel les packages LaTeX sont un peu plus pauvres (mais certainement pas indigents, et suffisants pour la plupart des usages).

Les packages LaTeX pour faire des présentations

Historiquement, il y avait les classes slides, et seminar qui sont beaucoup trop basiques. Ensuite sont apparus pdfscreen et prosper, qui sont beaucoup plus évolués. Enfin est venu beamer, qui est nettement le meilleur choix à l'heure actuelle. C'est de lui que traitera le reste de l'article. Mentionnons enfin advi, qui est un viewer de dvi avec plein de fonctions graphiques grassouilles (par exemple, on peut faire se balader du texte sur la page). Il présente l'inconvénient de ne tourner que sous unix, et de ne pas être bien standard (en général, on doit se l'installer à la main).

Beamer

Beamer est donc un package LaTeX prévu pour faire des présentations. Il est conçu pour produire du pdf. Pour ce faire, on compile le fichier .tex en utilisant pdflatex. Le pdf obtenu peut alors être visualisé avec n'importe quel afficheur de pdf, comme kpdf.

Beamer vient avec une documentation très étoffée, accessible ici. Beamer possède également deux sous-packages :

pgf
package permettant plein de grassouillitudes graphiques. Il réimplémente une partie de pstricks (cela le rend intéressant en lui-même, puisque pstricks ne marche pas avec pdflatex). On vera ici un exemple d'utilisation de pgf pour inclure des images. Documentation de pgf.
xcolor
package permettant de définir des couleurs, de manière très sophistiquée  : mélange de couleurs, différents modèles de couleurs, ... Documentation de xcolor.

Comme ils sont assez techniques, et pas indispensables à maitriser pour une utilisation simple de beamer, on ne les décrira pas plus avant ici, on renvoie à leur documentation.

Beamer est installé sur les machines de l'École, et est inclus dans de plus en plus de distributions de TeX. Si néanmoins vous ne l'avez pas sur la votre, vous pouvez le télécharger ici, il faut y récupérer les versions les plus récentes de latex-beamer, pgf et xcolor.

Un exemple de base

Le .tex

Soit le fichier b.tex suivant :

  \documentclass{beamer}
  \usepackage[utf8]{inputenc}
  \usetheme{Warsaw}

  \title{Hello World!}
  \author{B. Meuhr}\institute{École Normale Supérieure, département de pipologie}

  \begin{document}

  \begin{frame}
  \titlepage
  \end{frame}

  \begin{frame}
  \textsc{Beamer}, c'est vachement tout beau!
  \end{frame}

  \begin{frame}
  Et c'est facile.
  \end{frame}

  \end{document}

On le compile avec la commande pdflatex b.tex, et l'on obtient alors un joli fichier b.pdf, que l'on peut afficher avec Acrobat Reader (on a intéret à passer en mode plein écran, pour ce faire, taper control L).

Les points clefs

On commence par :

  \documentclass{beamer}

ce qui charge beamer, et effectue les réglages de bases.

Ensuite, beamer étant très versatile, il faut le régler à son gout. Souvent, on se contente de charger un thème prédéfini, qui se charge de définir l'apparence graphique de tous les éléments. Ici, on utilise le thème « Warsaw » (il y en a beaucoup d'autres, ils sont décrits dans le manuel de Beamer) :

  \usetheme{Warsaw}

Une fois à l'intérieur du \begin{document}, on entre le texte de la présentation. On doit diviser à la main son texte en pages (pour que la présentation soit compréhensible, il est important de faire la division intelligemment), et mettre chaque page dans un environnement frame.

Fonctionalités plus avancées

Sectionnement

On peut (et c'est même recommandé) insérer des \section, \subsection et cie. Certains thèmes (par exemple le Warsaw utilisé ci-dessus) affichent un condensé de la table des matières dans un panneau, ce qui, à l'affichage, permet de naviguer facilement à travers le document en cliquant.

Animations

Beamer permet de définir des séquences de slides différant seulement par des apparitions ou disparitions (ou mise en grisé) de morceaux de texte. Par exemple, ce code :

  \begin{frame}
  \begin{itemize}
  \item<1,3> Ploum!
  \item<2-4> Plim?
  \item Plum...
  \end{itemize}
  \end{frame}

va produire une séquence de 4 slides. Toutes les 4 auront un « Plum... » sur la troisième ligne. La première ligne contiendra un « Ploum! » sur la première et la troisième slide, tandis qu'elle sera vide sur la deuxième et la quatrième. La deuxième ligne, elle, sera vide sur la première slide, et contiendra « Plim? » sur les suivantes.

Comme le montre cet exemple, un certain nombre de commandes ont été modifiées pour prendre un argument optionnel entre <>. Dans cet argument on peut mettre un nombre, un intervalle (deux nombres séparés par un -), ou plusieurs nombres ou intervalles séparés par des virgules. Ces nombres spécifient sur quelles slides de la séquence qui va être créée la commande doit « avoir un effet ». Pour \item, cela veut dire afficher la bille et le texte qui en dépend. Mais pour les commandes de changement de police ou de couleur, cela veut dire que le changement ne doit être effectué que sur les slides en question. Par exemple, un :

  \textbf<2>{ploum}

aura pour effet de mettre « ploum » en gras sur la deuxième slide, et en normal sur la première.

L'argument optionnel entre <> n'est pas un effet magique : les auteurs de Beamer ont du modifier toutes les commandes ... qu'ils ont modifiées. Pour les autres, il faut se débrouiller à la main. On dispose des commandes \only et \uncover qui prennent un argument entre <>, puis un argument normal entre {}, qu'elles n'affichent que sur les slides spécifiées. La différence entre les deux est qu'avec only, le texte est jeté, tandis qu'avec uncover, il occupe sa place mais est transparent. Par exemple, avec :

  pif \uncover<2>{paf} Abcd-Efgh \only<1>{Ijklmn} ouais!

on obtiendra :

  pif     Abcd-Efgh Ijklmn ouais!

sur la première slide, et :

  pif paf Abcd-Efgh ouais!

sur la deuxième.

Par défaut, le texte caché est complètement invisible. Il est possible de l'avoir en grisé en mettant un :

  \setbeamercovered{transparent}

Customisations

Couleurs

Beamer permet de modifier les couleurs de beaucoup de types d'élèments. Il y a une « beamer color » associée à chaque type d'élément (elles sont listées dans le manuel), et l'on peu modifier chaque couleur indépendament des autres. Cela se fait avec la commande \setbeamercolor qui prend en premier argument le nom de la couleur, et en deuxième argument une spécification de couleur. Par exemple :

  \setbeamercolor{normal text}{fg=red,bg=blue}

fait en sorte que le texte ordinaire soit en rouge sur fond bleu. On peut spécifier des couleurs définies à l'aide du package xcolor.

Templates

Les divers éléments répétitifs des slides sont définis à l'aide de templates, qui sont du code évalué pour chaque slide. Par exemple, l'arrière-plan des slides est définie par le template background. Supposons que l'on veuille mettre l'image ploum.jpg comme fond de transparents. Il suffit de faire :

  \pgfdeclareimage[height=96mm,width=128mm]{nombidon}{ploum}
  \setbeamertemplate{background}{\pgfuseimage{nombidon}}

et tous les transparents suivants auront l'image en arrière-plan. On a utilisé ici les commandes graphiques du package pgf. 96mm et 128mm sont les dimensions par défaut de la page pour beamer (le viewer de pdf fait un zoom, il est donc inutile et même nuisible de changer la taille de la page).

Conclusion

Il existe également un mécanisme de « beamer font » qui fonctionne similairement. Noter qu'il existe des thèmes définissant d'un coup tous les templates, couleurs et polices. Souvent, il vaut mieux choisir un thème, et faire juste une ou deux modifications de détail...

Enfin, pour modifier une couleur, un template ou une police sur une zone limitée et non globalement, on utilise le mécanisme classique des groupes : il suffit d'encadrer entre accolades la zone du texte où l'on veut que le changement ait un effet, et de mettre le \setbeamertemplate, \setbeamercolor ou \setbeamerfont juste après l'accolade ouvrante.

Gadgets amusants

On peut aussi spécifier des effets graphiques à effectuer lors d'un changement de page, inclure des sons, des vidéos... Tout cela est décrit dans le chapitre 14 du manuel.

Note sur pdflatex

Comme il a été dit, pdflatex est une variante de latex qui pond du pdf au lieu de sortir du dvi. Cela a certains effets secondaires au niveau de la gestion de tout ce qui est graphique. En particulier, on ne peut plus utiliser tout ce qui était à base de postscript : inclusion d'images eps, pstricks, ... En compensation, pdflatex fournit pas mal de primitives graphiques, qui suffisent dans la plupart des cas. En particulier, on peut inclure directement (alors qu'avec latex, il faut les convertir en eps) des images dans les formats bitmaps jpg et png. Pour des dessins vectoriels, il vaut mieux les fournir directement au format pdf pour l'inclusion. On peut convertir un eps en pdf avec la commande epstopdf.

Auteur : Luc Habert.