💾 Archived View for unbon.cafe › lejun › posts › 20230126_pandocPositionFigures.gmi captured on 2023-06-16 at 16:42:35. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

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 :

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…