®om's blog { un blog libre }

Des slides Beamer en Markdown

Pour produire des slides propres pour une présentation, j’aime beaucoup Beamer (basé sur LaTeX). Mais la syntaxe est un peu lourde et la configuration est parfois inutilement compliquée (fonts, encodage, compilation multipasse…).

Est-il possible d’avoir les avantages de Beamer sans ses inconvénients ? La réponse est oui, grâce à pandoc et son Markdown étendu.

Beamer

Voici le code d’un exemple très simple de présentation Beamer :

\documentclass[hyperref={pdfpagelabels=false}]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\title{Exemple}
\author{Romain Vimont}
\date{15 février 2014}

\begin{document}

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

\section{Ma section}

\begin{frame}{Ma première frame}
\begin{itemize}
 \item c'est bien
 \item mais c'est verbeux
\end{itemize}
\end{frame}

\end{document}

Le code source est, il faut bien l’avouer, assez rebutant, et le rapport signal/bruit assez faible.

Une fois les paquets pdflatex, textlive-latex-base et latex-beamer installés (sous Debian), vous pouvez le compiler avec :

pdflatex fichier.tex

Markdown

Voici maintenant l’équivalent en Pandoc-Markdown :

% Exemple
% Romain Vimont
% 15 février 2014

# Ma section

## Ma première frame

 - c'est bien
 - et en plus ce n'est pas verbeux

Indiscutablement, c’est beaucoup plus lisible !

Avec le paquet pandoc (en plus des paquets latex déjà installés), vous pouvez le compiler avec :

pandoc -st beamer fichier.md -o fichier.pdf

Notez que le résultat n’est pas strictement identique, la version compilée avec pandoc ajoute une frame de section, mais il ne s’agit que d’une différence de template par défaut.

Démo

J’ai créé une présentation d’exemple avec un thème personnalisé.

beamer

Le résultat est disponible ici, mais c’est surtout la source (raw) qui est intéressante. Pour récupérer le projet et générer le pdf :

git clone http://git.rom1v.com/mdbeamer.git
cd mdbeamer
make

Il est également disponible sur github.

Ce projet a vocation à être utilisé comme base pour mes futures présentations (et les vôtres si vous le désirez). Chacune d’entre elles sera sur une branche git et sur un remote différents.

Injection de version

Pour pouvoir distinguer rapidement différentes versions d’une même présentation, j’ai également ajouté au Makefile une commande pour injecter un identifiant de version à côté de la date (donc à la fin de la 3e ligne du code source). Il s’agit du résultat de git describe (contenant le nom du dernier tag annoté) ou à défaut simplement le numéro de commit actuel.

Pour l’utiliser :

make withversion

Un format pivot

J’utilise ici le Pandoc-Markdown pour écrire du Beamer plus simplement.

Mais son intérêt est beaucoup plus général : il s’agit d’un véritable format pivot, compilable vers de nombreux formats.

Pour de la documentation par exemple, il suffit de l’écrire en Pandoc-Markdown et de la compiler, grâce à pandoc, en :

C’est d’ailleurs très pratique quand quelqu’un vous demande une documentation dans un format totalement inadapté (type docx), à rédiger de manière collaborative : il suffit alors d’utiliser Pandoc-Markdown, git et un Makefile.

Pour les slides, pandoc supporte, en plus de Beamer, la compilation vers des slides HTML :

Cette généricité a bien sûr des limites : l’utilisation de code spécifique à un format particulier (tel que j’en utilise dans mon exemple) empêche de le compiler correctement vers d’autres formats.

Conclusion

Le language Markdown (étendu par pandoc) permet de combiner la généricité, la simplicité et la _git_abilité pour écrire des documents ou des slides, ce qui en fait un outil absolument indispensable.

Commentaires

Cool merci pour cette découverte :)

À part d’éventuelles présentations à réaliser, peu d’intérêt de faire du Latex pour moi (pas de rédaction hors wiki ^^). À tester sous peu.

Super article, très intéressant. Merci. :-)

[…] discover it with the post of ®om’s blog. Thanks to him […]

Super intéressant, je vais adopter tout ça pour ma prochaine présentation ! Merci !

greg

Merci c’est vraiment du bon boulot. Je galérais à mettre un thème nickel pour du beamer. GG!

Poster un commentaire

Nom : (requis)
E-mail : (optionnel, non publié)
Site web : (optionnel)
Quelle est la 3e lettre du mot blog ? (antispam)

Les commentaires sont formatés en markdown.