par Laurent Bloch
Un article précédent annonçait mon choix d’utiliser désormais pour rédiger mes textes le format AsciiDoc, à partir duquel on peut générer facilement des sorties aux formats PDF, DocBook, LaTeX, Html et même docx
: quel luxe, pouvoir créer un document Word, ce que l’on nous demande à tout bout de champ, sans avoir à utiliser ce logiciel calamiteux ni ses succédanés qui ne valent guère mieux ! Étant bien entendu que pour la vraie typographie LaTeX demeure indispensable.
Pour mon site et mon blog j’utilise le CMS Spip, qui me donne toute satisfaction. Pour information, au gré de mes collaborations et emplois successifs, j’ai eu à utiliser Typo3, Dokuwiki, Joomla !, Dotclear, Drupal, Wordpress et Nuxeo : Spip me semble le compromis le plus raisonnable, entre les CMS au mode d’emploi inextricable, ceux dont les fonctions sont rudimentaires et mal conçues et ceux percés de trop de failles de sécurité. Comme parmi les logiciels de conversion disponibles il n’en existait pas d’AsciiDoc vers Spip, j’ai écrit AsciiDoc-Spip, disponible ici, à base d’expressions régulières.
Mais je possède déjà un stock important de textes composés avec les balises de Spip, ce qui m’a amené à écrire le logiciel inverse, Spip-AsciiDoc, cette fois avec un analyseur lexical basé sur une vraie grammaire. Ce n’est pas encore parfait, il y a quelques écritures parasites qui demandent un peu de finition manuelle, il manque encore ce qu’il faut pour les textes de programmes, je n’ai pas réussi à composer les textes attachés aux URL en italique ou en gras, je persévère, mais si l’un de mes lecteurs avait un conseil à me donner, il en serait remercié.
Comme pour AsciiDoc-Spip j’ai programmé en Scheme, avec le compilateur Bigloo et ses extensions d’analyse grammaticale (voir ici pour installer Bigloo sous Ubuntu, cela marche avec l’instance Ubuntu de Windows 10). . Voici le programme :
Le fichier .afile
qui permet de localiser les modules :
Pour compiler ce programme il faut avoir créé le fichier .afile
, puis :
Pour pouvoir essayer, voici un exemple de texte avec des balises Spip, à traduire en AsciiDoc (les paragraphes sur une seule ligne de préférence) :