Markdown et les langages de balisage léger

Revue de détail de Markdown: Intérêt, limites, librairies, éditeurs, alternatives.

Pour Wikipedia,

Un langage de balisage léger est un type de langage de balisage utilisant une syntaxe simple, conçue pour qu’un fichier en ce langage soit aisé à saisir avec un éditeur de texte simple, et facile à lire dans sa forme non formatée.

Un langage de balisage léger a sa place dans la rédaction et l’édition de contenu électronique pour tous les journalistes, auteurs, écrivains qui détestent écrire dans un traitement de texte. Il est généralement reproché aux éditeurs WYSIWYG de distraire l’auteur de son « flux d’inspiration » et de favoriser la forme sur le fond. Le changement incessant de clavier à souris est aussi un des griefs quant il s’agit d’être productif dans l’écriture.

Quand il s’agit d’écrire pour le web, il n’est pas possible de demander aux auteurs de contenu d’écrire en HTML directement; trop technique ! De plus, il est de notoriété publique que les éditeurs WYSIWYG embarqués dans la plupart des CMS génère un code HTML plus ou moins propre… Pour rester poli ! De gros progrès ont été faits cependant.

Enfin, un document écrit dans un langage de balisage léger peut vous permettre de générer à peu près n’importe quel type de formats comme HTML, PDF, OpenOffice, Word, LateX, Docbook, EPUB… C’est l’un des points forts de ce type de langage ! Les transformations d’un format à un autre sont faciles et vos simple documents texte peuvent donc être facilement publiés sur n’importe quel type de médias (papier, web, livre électronique…).

Maintenant que nous avons vu quelques intérêts d’un langage de balisage léger, intéressons-nous à Markdown qui selon Wikipedia est

Un langage de balisage léger créé par John Gruber et Aaron Swartz. Son but est d’offrir une syntaxe facile à lire et à écrire. Un document formaté selon Markdown devrait pouvoir être publié comme tel, en texte, sans donner l’impression qu’il a été marqué par des balises ou des instructions de formatage. La source d’inspiration principale est le format du courrier électronique en mode texte.

On pourrait être tenté de croire, vu la popularité actuelle du format ces derniers temps que celui-ci est récent. Que nenni ! Markdown est déjà un vétéran qui fête ses dix années d’existence cette année. Il est simplement remis au goût du jour, notamment par les générateurs de sites statiques.

Les éditeurs Markdown

Il y en a un paquet; du simple éditeur de texte possédant un plugin pour travailler en Markdown au logiciel entièrement dédié à cette tâche mais aussi aux nombreux services en ligne.

Tous ont le souci de ne pas distraire l’auteur de son écriture et certains proposent un simple écran blanc. Juste de quoi retrouver le syndrome de la page blanche !

Sur le bureau

Directement depuis OS X, Linux ou Windows, des éditeurs gratuits ou payants vous permettent de travailler directement en Markdown.

Mou

Mou est gratuit et ce n’est pas son seul intérêt. Il fonctionne sur Mac OSX et iPad. Il y a là tout ce qu’il faut pour écrire de façon efficace et le rendu se fait à côté « en side by side » avec le document édité.

Mouapp
Mouapp

IA Writer

C’est le premier à ma connaissance qui a décidé de ré-interroger « from scratch » la notion d’écriture sur écran. Non seulement l’écran est très dépouillé mais tout est pensé dans le logiciel pour ne pas avoir à lâcher les mains du clavier. Le logiciel est payant certes mais à $5, cela reste accessible !

Texts

Pour mac et PC, Texts est bien foutu, à condition toutefois d’aimer voir rendre en direct les balises Markdown que vous tapez. Question de goûts et couleurs ! Il s’appuie sur Pandoc pour les imports/exports, gage de nombreuses possibilités dans ce domaines.

Texts
Texts

Tous les éditeurs de texte du marché (VIM, Tetxmate, Sublime Text…) ont tous à minima un module de coloration syntaxique pour Markdown, voir des raccourcis clavier et autres macros.

Vous n’êtes donc absolument pas obligés de passer sur un éditeur Markdown spécifique, qui a malgré tout l’avantage pour certains d’entre nous de représenter le rendu de votre code Markdown sans passer par une prévisualisation ou export.

Et même, au pire, si vous n’avez qu’un navigateur sous la main, vous pouvez toujours éditer du Markdown (ligne internet requise !).

En ligne

Directement accessible depuis n’importe quel navigateur, les éditeurs en ligne se multiplient et se connectent avec d’autres servies en ligne (Dropbox, Gihub) pour former de puissants flux d’édition, publication basés sur Markdown.

Ceux que je n’ai pas encore vraiment testé

StackEdit

Avec StackEdit, la synchronisation est possible avec Dropbox et Google Drive, publication sur Blogger, Blogger Page, Dropbox, Gist, GitHub, Google Drive, SSH server, Tumblr, WordPress. Rien que ça !

StackEdit
StackEdit

Il est utilisé sur l’ensemble des sites StackOverflow.

Prose.io

Prose.io est un éditeur Markdown adossé à n’importe quel dépôt Github. Vous pouvez utiliser la version en ligne ou télécharger le logiciel pour le faire fonctionner sur votre propre serveur.

Liste des brouillons dans prose.io
Liste des brouillons dans prose.io

Il est clairement orienté vers la publication avec Jekyll et sait par exemple gérer les statuts brouillon et publié de celui-ci.

Mode édition dans prose.io
Mode édition dans prose.io

Je n’ai mentionné dans cet article que les éditeurs que j’ai utilisé ou que j’utilise toujours. Il suffit de regarder cette liste pour se rendre compte qu’il en existe à foison !

Les librairies Markdown

Vous allez trouver chaussure à votre pied quelque soit le langage que vous utilisez. Le plus dur sera de faire votre choix.

Il est possible de citer quatre implémentations rien qu’en Ruby avec Maruku, Kramdown, Redcarpet et Redcloth. Rubygems recense pas moins de 70 librairies se rapportant à Markdown !

Le langage Python en propose lui aussi quelques unes dont les plus connues sont Markdown2 et Markdown.

Les autres langages ne sont pas en reste et voici quelques exemples pour Javascript et PHP5.

Limites de Markdown

Cela peut sembler curieux de prime abord, mais la multitude d’outils et de librairies disponibles est ce qui pourrait finir par nuire à Markdown.

Tous mettent en œuvre les balises Markdown de base mais chacun y va de sa petite touche personnelle pour outrepasser ce qui est perçu comme des limites par les auteurs de ces outils.

Les tableaux, les listes de définitions, les formules mathématiques, les notes de bas page sont des exemples de balises qui sont plus ou moins standards en fonction des outils. Un peu comme si le HTML était rendu différemment en fonction des navigateurs. Tout le monde sait que ce n’est pas le cas !!!

Un exemple avec les listes de définitions dans Kramdown

kramdown
: A Markdown-superset converter

et Pandoc

Term 1

:   Definition 1

Les différences sont subtiles mais incompatibles ! La liste définie avec Kramdown ne sera pas rendue en liste avec Pandoc et inversement.

Si vous utilisez ce genre de balises donc, il y a peu de chance que le balisage utilisé avec un logiciel survive à un changement d’outil et ou de librairie.

Au final, l’interopérabilité est donc moins bonne, sauf si vous restez dans les balises originellement implémentées dans Markdown.

Les alternatives

Pour ceux qui seraient réfractaires à Markdown et à sa multitude d’implémentations, il existe d’autres langages de balisages légers non dénués d’intérêts.

Et puis, comme évoqué en introduction, les passerelles de Markdown vers ceux-ci sont en général assez simples; avec les limitations évoquées ci-dessus.

Asciidoc

Asciidoc est à ma connaissance la première tentative de langage de balisage léger. Il est un peu le « godfather » de tous les autres.

Textile

Textile a été créé au départ pour un moteur de blog nommé TextPattern. Au passage, si vous ne connaissez pas TextPattern, jetez y un œil, il reste un des meilleurs moteurs de blogs, CMS que je connaisse en PHP. Textile est bien implémenté dans de nombreux outils et librairies.

Restructured Text

Restructured Text est le langage développé pour la suite Docutils de Python. Normal donc de le retrouver au cœur d’une solution de publication documentaire comme Sphinx, lui-même écrit en Python.

Wikis

Les principaux logiciels pour faire un wiki (MediaWiki, MoinMoin, Dokuwiki…) ont tous créés une langage de balisage léger s’inspirant de Markdown pour l’édition. Et ils sont tous différents entre eux malgré la tentative de standardisation avec WikiCreole. Elle est pas belle la vie ?

Et bien d’autres encore

Il existe bien d’autres alternatives à Markdown comme BBcode utilisé dans PHPBB. Il est un peu devenu au fil du temps le standard en matière d’édition dans les forums.

Txt2tag est également à signaler pour ses nombreux formats de sorties.

Utiliser un langage de balisage léger

Arrivé au terme de ce billet, il ne vous reste plus qu’à vous concentrer sur l’essentiel: Votre contenu.

Utiliser un de ces langages ne vous conduira jamais dans une impasse. Ce ne sont que des fichiers texte après tout et il vous sera toujours possible de transformer votre prose originelle pour qu’elle passe à la postérité !

Olivier Jan

À propos de l’auteur

| Cofondateur de Check my Website.

Check My Website a arrêté son activité en 2017, n'hésitez pas à vous tourner vers Dareboost.