par Laurent Bloch
Souvent j’écris un texte en LaTeX pour avoir une sortie PDF présentable, puis on me demande une copie au format docx
de Word, par exemple pour une publication. Traduire à la main du LaTeX en docx
est fastidieux, et on oublie toujours quelque chose. Les logiciels censés faire cela ne m’ont jamais convaincu, et ceux qui le font en sens inverse sont pires.
Il y a quelque temps un article de Benoît Benedetti, administrateur système Linux à l’Université de Nice Sophia Antipolis, AsciiDoc et AsciiDoctor pour soigner votre documentation, dans Gnu/Linux Magazine France n° 190 de février 2016, m’a fait découvrir le format de document AsciiDoc, qui permet de saisir un texte une fois pour toutes, avec une syntaxe de balises assez simple mais complète (plus complète que celle de Markdown, un système du même genre). À partir de ce document source, les logiciels AsciiDoc ou, mieux, AsciiDoctor permettent de produire des sorties PDF, LaTeX, DocBook, Html, XML, etc. Et à partir de la sortie DocBook le logiciel Pandoc peut produire une sortie docx
tout à fait acceptable. J’ai donné le mode d’emploi de ces merveilles dans un autre article.
Il manquait quelque chose : j’utilise pour mon site Web et mon blog le système de publication (CMS) Spip, qui me convient parfaitement, mais pour lequel n’existait pas de traducteur AsciiDoc. Il m’a fallu donc en écrire un, que je vous présente ici. Il s’appelle AsciiDoc-Spip.
AsciiDoc-Spip ne traite qu’un sous-ensemble « raisonnable » d’AsciiDoc : ainsi, il n’accepte que les URL suivis d’une annotation entre crochets, éventuellement vide, mais j’ai besoin de la paire de crochets pour détecter la fin de l’URL. Pour les programmes je suppose l’usage du plugin de coloration du code. Je suppose que chaque paragraphe est saisi sur une seule ligne et séparé du suivant par une ligne vide. Je n’ai pas traité l’insertion de figures, qui de toute façon, avec Spip, se traite facilement dans l’interface d’administration. Je ne traite qu’un seul format de tableau, le plus simple, de toute façon sur une page Web mieux vaut rester simple.
Comme vous le verrez, j’ai programmé cela à grands coups d’expressions régulières. Je sais, il aurait été mieux d’écrire un véritable analyseur syntaxique, ce sera pour une version ultérieure.
Le langage de programmation utilisé est Scheme, avec le compilateur Bigloo. Désolé, pour compiler ce programme il faut installer Bigloo (cet article décrit comment faire avec une machine virtuelle sous Windows, mais sur un machine avec Ubuntu natif ce serait la même chose ; attention aux pré-requis).
L’article que vous lisez a été écrit en AsciiDoc et traduit en Spip par AsciiDoc-Spip. Voici le programme :