« 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. »
Je suis du genre à faire mes visuels de présentation à l'arrache car je laisse murir mon message et la manière de l'articuler ce qui fait que j'ai rarement besoin de répéter mon speech : je sais où je veux en venir et comment. Et le stress, ça aide à poursuivre/axer la réflexion. Le support sert uniquement à ne pas me perdre ainsi que l'auditoire. Du coup, se farder des \begin{itemize}, \item et autres \textbf{} à 30 minutes de ton speech : what about no?
J'ai déjà dit tout le bien que le passage de Impress à Beamer m'a fait (voir
http://www.guiguishow.info/2012/06/12/latex-motivations-usage/), maintenant, il est temps de passer au niveau supérieur. :D
Pour les paramètres à passer à pandoc, les extensions existantes et les balises de formatage, c'est par ici :
http://pandoc.org/README.html. Je vous recommande vivement la lecture du bloc « Structuring the slide show »
Je retiens :
# = changement de niveau. Donc # = frame/slide, ## = un bloc dans une frame/slide,... Sauf si --slide-level=2 est utilisé dans la ligne de commande pandoc auquel cas # = une interslide qui contient juste le titre de la section, ## une slide/frame ;
\begin{block|alertblock|exampleblock}{} \end{block|alertblock|exampleblock} = pas d'équivalence mais il est possible d'utiliser cette syntaxe. Simplement, le markdown à l'intérieur ne sera pas interprété donc tout le contenu du bloc doit être du LaTeX : \begin{itemize}, \item, \end{itemize}, par exemple ;
\itemize \item = - (oui, un tiret). Pour avoir une liste dans une liste, il suffit de tabulation + tiret ;
\textbf{mon texte en gras} = **mon texte en gras** ;
\textit{mon texte en italique} = _mon texte en italique_ ;
\underline{mon texte souligné} = pas d'équivalence ;
\usepackage{ulem} + \sout{mon texte barré/rayé} = ~~mon texte barré/rayé~~ avec l'extension strikeout ;
Évidemment, les styles précédent (gras, italique, barré) peuvent se cumuler : ~~_**YOLO**_~~ ;
\url{mon_lien} = <mon_lien> ;
\usepackage{eurosym} + \euro = € ;
\begin{figure}[!h] \centering \includegraphics{images/mon_image.jpg} \caption{Source : ma source} \end{figure} =  L'image sera centrée automatiquement. Non, des choses comme « [height=6cm, width=2cm] » ne sont pas disponibles. Ce n'est pas le rôle de LaTeX mais celui d'un logiciel de traitement d'images, ceci dit. Attention : si vous utilisez les formats « markdown_strict » ou « markdown_mmd », alors le centrage et la légende ne se font pas automatiquement (je n'ai pas creusé la question de la bonne syntaxe) ;
% mon commentaire = <!-- mon commentaire --> (oui, la balise commentaire du XHTML). Néanmoins, il est impossible d'introduire un commentaire entre le préambule (titre/auteur/date) du document et la première slide sinon une slide blanche sera insérée automatiquement. Or, c'est ici que j'insère la licence et la ligne de commande pour générer le PDF correspond. Pour éviter ce désagrément, j'utilise un préambule MultiMarkdown :
« Title: My title
Author: John Doe
Date: September 1, 2008
Comment: This is a sample mmd title block, with
a field spanning multiple lines. » (source :
http://pandoc.org/README.html) ;
Comme d'habitude, il faut échapper les caractères qui ont un sens en LaTeX comme « & » ou « # » ou « $ » : \&, \#, \$ ;
Une table des matières automatique ça n'existe pas sans contrainte avec pandoc (sans éditer le template, j'entends).
Le premier inconvénient, c'est que la table des matières est insérée juste derrière le slide de titre (celui qu'on projette pour captiver l'auditoire pendant que celui-ci s'installe dans la salle :P ). Or, j'aime bien commencer par une intro où je me présente, j'explique ce que je viens faire ici (quel est mon but ?) et les mots clés de mon sujet avant d'annoncer le plan.
Le deuxième problème est que, pour avoir une table des matières, il faut forcément que le --slide-level soit à 2. Donc il faut # ma section ## ma slide. Or #ma section produit des interslides dont je ne veux pas.
Pour activer ou désactiver une extension, il faut + ou - au format d'entrée. Exemple : j'utilise le format d'entrée markdown et je veux l'extension strikeout (pour barrer du texte), alors ma chaîne c'est « markdown+strikeout ». Il faut donc la donner à l'option « -f » de pandoc qui sert à préciser le format d'entrée : pandoc -f markdown+strikeout -st beamer input.md output.pdf.
Donc pour moi, ça donne : pandoc -f markdown+mmd_title_block+strikeout -st beamer -V theme:Boadilla -V lang:french input.md -o slides.pdf . -V permet de préciser les valeurs de variables internes. Ici : le thème et la langue (pour déterminer où effectuer les éventuelles césures) utilisés. Pour que ça fonctionne, il faut installer les packages texlive texlive-lang-french texlive-latex-extra texlive-base texlive-latex-base cm-super lmodern latex-beamer pandoc.
ÉDIT DU 29/11/2015 À 11h55 : lang n'attend pas un country code-like comme le dit la doc de pandoc mais french ou francais. Voir /var/lib/texmf/tex/generic/config/language.dat : francais = patois = french. FIN DE L'ÉDIT.