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 :
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é.
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 :
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.