Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Un seul logiciel pour tous mes textes !
Et aussi pour mon site Web avec Spip
Article mis en ligne le 30 septembre 2020
dernière modification le 10 octobre 2020

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 :