-- Leo's gemini proxy

-- Connecting to unbon.cafe:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;

Pandoc : position figures via Markdown


2023-01-26


À plusieurs occasions j’ai été conduit à créer des tutoriels simples pour des proches, comprendre par là du texte sous forme de tirets et des captures d’écran. La solution la plus rapide serait de passer par un outil de traitement de texte comme LibreOffice Writer, mais j’y vois plutôt une occasion de m’exercer avec des outils plus basiques à savoir Markdown et Pandoc (LaTeX).


Problèmes de conversion au format pdf


L’objectif premier est d’avoir un fichier pdf, visuellement proche de ce qui serait obtenu via un logiciel de traitement de texte, que le texte et les images soient à des proportions agréables à lire. Dans l’idéal, mon fichier markdown serait une suite d’éléments basiques sous forme d’instructions numérotées suivie de l’image d’illustration.


1. Texte
![alt](image.png)

En pratique, cette structure pose problème, de deux façons :


Quoi qu’on en dise, Markdown gère mal les listes numérotées. Ici, entrecouper les listes par des images remet la numérotation à 0 ;

Lors de la conversion en pdf, Pandoc – via LaTeX – fait des images des figures flottantes plutôt que fixes, ce qui rend le résultat peu satisfaisant avec si peu de texte.


Pour ce second problème, une solution suggérée est d’apporter des options LaTeX lors de la conversion, la commande aura donc la forme suivante :


pandoc fichier.md -o fichier.pdf -H fichier.tex

L’argument `-H` permet d’indiquer des fichiers à insérer en en-tête.


Figures flottantes


Une fois dans LaTeX, différentes solutions existent.


\makeatletter
\def\fps@figure{h}
\makeatother

Une première solution est d’écraser les paramètres de base de sorte à ajouter l’argument `h` (pour here), à chaque figure. En pratique le résultat est difficilement mieux qu’avec les options de base.


Utiliser `h!` modifie également le résultat, sans que cela ne soit satisfaisant non plus, les images continuent d’être regroupées au sein d’une page.


La méthode que j’utilise, malgré sa dépendance à un paquet tier, est de faire appel au paquet `float.


\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][2] {
	\expandafter\origfigure\expandafter[H]
} {
	\endorigfigure
}

Théoriquement similaire, ce code réussi à forcer la position des figures de telle sorte à ce que l’ordre des images et du texte soit conservée.


Alternatives


Dans le fond, ce n’est pas tant un problème venant de l’outil que d’un besoin spécifique de ma part qui m’entête à utiliser des outils pas forcément conçus pour. Ce problème serait résolu facilement pour peu que j’ajoute des références aux figures dans mes instructions…

-- Response ended

-- Page fetched on Sat May 18 23:41:25 2024