Convertir un document Asciidoc en OpenDocument (ODF, LibreOffice) avec Pandoc

Nativement, Asciidoc ne permet pas de convertir son format en un document OpenDocument (fichier ODF, LibreOffice). Cependant il est possible de lui adjoindre un outil tiers pour l’aider : Pandoc.

Pandoc se veux être un convertisseur universel. Il permet de convertir les formats de fichiers suivants :

markdown, reStructuredText, textile, HTML, DocBook, LaTeX, MediaWiki markup, TWiki markup, OPML, Emacs OrgMode, Txt2Tags, Microsoft Word docx, LibreOffice ODT, EPUB, Haddock markup

dans les formats suivants :

  • Formats à base de HTML : XHTML, HTML5, and HTML slide shows using Slidy, reveal.js, Slideous, S5, ou DZSlides.
  • Traitement de texte : Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML
  • Ebooks : EPUB version 2 or 3, FictionBook2
  • DocBook, TEI Simple, GNU TexInfo, Groff man (les pages man d’Unix), Haddock
  • Format de Mise en page : InDesign ICML
  • Formats « outline »: OPML
  • Format à base de TeX : LaTeX, ConTeXt, LaTeX Beamer slides
  • PDF au travers de LaTeX
  • Formats « markup » : Markdown, reStructuredText, AsciiDoc, MediaWiki, DokuWiki, Emacs Org-Mode, Textile
  • Votre propre format en utilisant le langage « lua« .

Vous trouverez Pandoc sur le site (en anglais) : http://pandoc.org/

Installer et utiliser Pandoc pour convertir de l’Asciidoc en ODF

Si vous êtes sous Windows 10, les directives suivantes sont identiques à un environnement Linux, à condition de le faire depuis le « Bash Window  Unbutu« . Donc depuis un Bash faire :

  • Installer Asciidoctor :
sudo apt-get install ascidoctor
  • Installer Pandoc :
sudo apt-get install pandoc
  • Convertir le document Asciidoc (ici « test.adoc ») en HTML ( « test.html » ) par :
asciidoctor -b html test.adoc  -o test.html

Puis convertir le document HTML (text.html) en ODF (test.odf) par :

pandoc  --base-header-level=3 -V date:"" -V title:"" -f html test.html -o test.odt

Si vous êtes sous Windows 10 et sur une version d’avant l’été 2017 (oui c’est la version standard actuelle Févr. 2017, sinon vous seriez sur une version Insider), la ligne de commande précédente génère une erreur : « pandoc: timer_create: Function not implemented« .
Pour l’éviter ajouter les options suivantes : « +RTS -V0 -RTS » :

pandoc +RTS -V0 -RTS --base-header-level=3 -V date:"" -V title:"" -f html test.html -o test.odt

ou avant de lancer Pandoc, exécuter la ligne suivante:

export GHCRTS=-V0