Markdown vs creole vs Restructured Text vs org-mode

Posted on 2014-05-10 in Blog

Comme je l'ai déjà détaillé ici, je ne suis pas un grand fan des syntaxes verbeuses à la LaTeX ou HTML et je préfère les langages à balisages légers (et oui, je ne suis pas non plus fan des WYSIWYG). Comme j'ai eu l'occasion d'en tester plusieurs ces derniers temps, je vous propose une petite comparaison.

Markdown

Peut être le plus connus et le plus utilisé. On le retrouve sur Github, Stackoverflow, pelican et dans les commentaires de ce blog :D. La syntaxe est simple ce qui doit expliquer sa popularité.

Malheureusement, le markdown de base n'est pas très complet. Il ne gère pas les tableaux par exemple. Certes, on peut insérer du HTML dans du code markdown pour palier ce problème mais bon, le but c'est justement de pouvoir utiliser quelque chose de plus léger que le HTML. Cela a donc assez logiquement entraîné la création de diverses extensions comme le markdow à la sauce github qui ne sont évidement pas toujours compatibles entre elle.

Ce langage contient aussi un point que je trouve particulièrement mal fait : pour insérer un saut de ligne, on peut ajouter deux espaces à la fin de la dite ligne. Pour moi c'est très mauvais : on ne voit pas si on a modifié ces espaces et tous mes éditeurs de texte sont paramétrés pour enlever les espaces de fin de ligne.

Mais ce qui m'a fait fuir ce langage c'est la possibilité d'ajouter du code que je trouve vraiment pourrie. On peut ajouter du code, soit en l'entourant avec ~~~ soit en ajoutant deux tabulations devant. J'avais déjà testé la syntaxe avec les tildes et ça marchait plutôt bien. Puis en voulant ajouter du code sur ce blog j'ai eu des problèmes pour activer la coloration syntaxique si l'extension table des matières est active. La syntaxe avec les tildes ne fonctionnait plus et j'ai bien galéré avec l'autre. Du coup, j'ai regardé d'autres syntaxes.

Restructured Text

L'autre syntaxe bien supportée par Pelican est le Restructured Text (rst en abrégé). C'est beaucoup plus complet que markdown et ça supporte beaucoup de chose : ajouter des propriétés aux images insérées, les références, sommaire et index… Il faut dire que le langage a été conçu pour remplacer LaTeX pour la documentation de python. Donc, mécaniquement, il faut pas mal d'options. Et je dois dire que le résultat, du point de vue des fonctionnalités offertes en est un concurrent sérieux pour l'export en html. LaTeX garde l'avantage pour l'export pdf car c'est aussi un système de mise en page très pointu (ce dont on a pas forcément besoin pour autre chose que la page de garde cela dit).

Pour être franc, mes premiers tests avec rst n'ont pas été concluant du tout. Premièrement, le fait qu'il soit nécessaire de souligner ces titres avec =, -, ou + suivant le niveau ne me plaît pas particulièrement, je trouve ça un peu lourd. Ici c'est d'autant plus lourd que le soulignement doit faire exactement la taille du titre, sinon rst génère une erreur.

Ensuite, les sous-listes doivent être séparées de la liste parente par un saut de ligne et la puce doit être indentée précisément sous le premier caractère du texte de la liste parente. Le calvaire des indentations en python mais en pire !

Enfin, les tableaux doivent être fait intégralement à la main.

Et puis j'ai trouvé cet article (en) qui m'a réconcilié avec le format. J'utilise désormais le rst-mode pour emacs qui permet de placer le bon nombre de caractères sous les titres avec ^u = , fait l'indentation tout seul. J'ai aussi appris que emacs est capable sans plugin supplémentaire de créer des tableaux ascii compatible avec rst. J'ai donc retenté l'expérience et ce fut concluant. Maintenant, j'admets, j'aime bien et j'ai pris plaisir à écrire mon tuto sur la communication série en arduino avec. Par contre, compte tenu de sa relative verbosité, je le réserve pour les longs articles ou les tutos.

Creole

Encore un autre langage à balise. Il a été créé dans le but d'unifier les langages existants. Il est léger et plutôt complet. Voir par pour la syntaxe. J'admets avoir été séduit par ce langage simple et efficace. J'ai même fait le plugin pelican pour l'utiliser. Je l'utilise pour les articles de blog assez courts qui n'ont pas besoin de la puissance de rst.

Org-mode

Je n'ai pas grand chose de plus à dire par rapport à mon dernier article : de LaTeX à org-mode. C'est complet et bien intégré avec emacs. Si je m'en suis un peu détourné c'est à cause du manque d'implémentation dans pelican. Il faut impérativement passer par emacs et on perd la possibilité d'utiliser le système de cache de pelican.

Conclusion

Le moins que l'on puisse dire c'est qu'on a énormément de choix. Je suis personnellement très déçu par mardown et j'ai du mal à comprendre pourquoi il est si populaire alors que d'autres langages comme creole sont vraiment bien.

Je pense également utiliser rst pour mes prochains rapport plutôt que LaTeX ou org-mode. Je trouve ce format mieux fait que org-mode bien qu'un peu plus verbeux. Mais je vais certainement continuer à utiliser org-mode pour mes notes.