Syntaxe SPIP versus Markdown

Comparaison des syntaxes SPIP et Markdown

9 janvier 2014, 3 septembre 2014,
par Romy Têtue

Mots-clefs associés à cet article :

Adopter Markdown dans SPIP ? Ces deux syntaxes de rédactions ont leurs qualités. L’une est très populaire, mais l’autre est plus complète. Comparons !

Markdown est rapidement devenu le langage de balisage léger le plus hype du Web. Sans doute moins pour sa syntaxe, certes simple mais lacunaire, que pour sa portabilité : nombreuses sont les applications tierces utilisant Markdown et l’on apprécie de passer de l’une à l’autre d’un simple copié-collé. Si bien que plusieurs souhaiteraient l’adopter en remplacement des bonnes vieilles syntaxes de nos outils favoris, SPIP, Dotclear et autres Wikis. Examinons cela de plus près…

Apparus à la même époque, les cousins SPIP et Dotclear, outils de publication francophones amateurs de belles lettres et soucieux de typographie, ont élaboré chacun une syntaxe légère de type wiki, au tout début des années 2000, dans le même esprit : structurer les textes et faciliter la rédaction, en épargnant aux contributeurs et contributrices d’avoir à apprendre le langage HTML, plus complexe. C’était bigrement malin !

Apparu en 2004, Markdown reste depuis stable et simple, et se popularise. Le site officiel de Markdown présente un banc d’essai qui permet de tester la syntaxe directement en ligne. J’ai été immédiatement séduite par sa lisibilité en texte brut, qui coïncide avec la simplicité que je recherche dans mes suggestions d’amélioration de la syntaxe SPIP, que je pratique depuis plus de dix ans. Mais Markdown est plus limité, relativement à la richesse d’usage à laquelle je suis habituée.

Dans SPIP, la syntaxe de rédaction consiste en des « raccourcis SPIP » dont voici un aperçu et l’aide complète en ligne, avec banc d’essai. L’usage de Markdown dans SPIP n’est pas encore possible — ou de façon expérimentale, entre marqueurs <md>…</md>, avec le plugin dédié.

Dotclear permet de rédiger dans plusieurs syntaxes de saisie, au choix, dont la syntaxe Wiki Dotclear. Comme d’autres syntaxes (dont txt2tags), Markdown y est utilisable avec le plugin idoine et Franck Paul a publié une table de correspondance Markdown vs Wiki Dotclear, poussant l’exercice comparatif jusqu’à rédiger ce même billet en double, dans chacune de ces deux syntaxes.

J’ai suivi, ci-après pour SPIP, la même approche que Franck pour Dotclear, par tableaux comparatifs successifs, commentés, mais dans l’ordre de ma démo Tiny Typo, en comparant les syntaxes natives et en choisissant, en cas de variantes, les balisages les plus similaires.

Paragraphes et sauts de ligne

Type SPIP Markdown
paragraphes (ligne vide) (ligne vide)
 retour chariot … bla bla.
Bla bla bla…
… bla bla.  

Bla bla bla…

 espace insécable  espace~insécable
séparateur ---- ----

Dans les deux syntaxes, pour créer des paragraphes, il suffit de laisser une ligne vide. Le retour chariot de SPIP, matérialisé par un tiret bas en début de ligne, est incompris des rédacteurs, qui ne l’emploient pas ou mal. Il est plus simple en Markdown, où il suffit de terminer la ligne par deux espaces avant de taper « retour ». Il est encore plus simple depuis SPIP 3, où il est suffit de taper « retour », tout naturellement.

SPIP a la particularité, appréciée des typomaniaques comme moi, de gérer les espaces insécables [1] de façon automatique mais aussi manuelle, permettant au rédacteur de les forcer au besoin. Il n’y a pas d’équivalent Markdown. Tiens, ni en Dotclear ? Et dans d’autres syntaxes ?

Marquages sémantiques

Type SPIP Markdown
 italique {italique} *italique*
gras {{gras}} **gras**
abréviation [HTML|Hyper Text Markup Language{en}] *[HTML]: Hyper Text Markup Language [MDE]

Indépendamment du code généré, qui diffère, on note le même nombre de caractères spéciaux pour les gras et italiques, dans les deux syntaxes. N’oublions pas que la simple astérisque, en Markdown, en gêne certains, habitués à d’autres syntaxes courantes où elle signale non l’italique mais le gras.

Sans équivalent en Markdown natif, le raccourci pour les abréviations a été pérennisé en SPIP 3. Dans les deux syntaxes, il manque de quoi marquer les portions de texte qui ont été supprimées (<del>) ou insérées (<ins>) et peut-être d’autres marquages sémantiques HTML, mais c’est discutable.

Ancres et liens

Type SPIP Markdown
lien simple http://www.spip.net <http://example.com/>
lien complet [texte|infobulle{lang}->http://www.spip.net] [texte](http://example.com "infobulle")
lien mailto [pseudo->adresse@courriel.fr] <address@example.com>
 ancre [ancre<-]
retour à l’ancre [texte->#ancre]
notes de bas de page texte [[Note automatique de bas de page.]] Un peu de texte avec une note de bas de page. [^1]

[^1]: Et voici la note. [MDE]

La syntaxe des liens est particulièrement riche dans SPIP, trop pour être exposée de façon exhaustive ici. Elle est très aisée à manier et reste d’une lisibilité correcte en texte brut. Elle est si appréciée que certains utilisateurs de Markdown regrettent de n’avoir pas l’équivalent. Il manque notamment les ancres, les mailto… et la mention de la langue cible n’est pas possible avec Markdown sans passer par les balises HTML.

Les notes de bas de page, qui ne sont pas natives en Markdown, sont disponibles en extension, mais peu aisées à manier. Dans SPIP, on apprécie tant la numérotation automatique que la personnalisation possible du libellé de l’appel de note (deux usages à l’œuvre dans le présent article).

Titres

Type SPIP Markdown
niveau 2 ## Titre
niveau 3  {{{Intertitre}}} ### Titre
niveau 4   #### Titre

Dans SPIP, il n’existe qu’un seul niveau de titre par défaut, dit « intertitre », ce qui, il faut bien le reconnaître, est souvent tout à fait suffisant, mais qui a le défaut d’être de niveau 3 (au lieu de 2 — le titre de niveau précédent étant le premier, traditionnellement réservé au titre de la page). Markdown propose des titres de niveau 1 à 6, avec des variantes syntaxiques plus naturelles.

Listes

Type SPIP Markdown
liste -* item
-** item
* item
        * item
ou
- item
        - item
énumération -# item
-## item
1. item
        1. item
définitions -? Terme
Définition [2]
Terme
:   Définition [MDE]

La syntaxe des listes Markdown repose sur l’indentation des niveaux inférieurs : c’est agréablement lisible et esthétique, mais ça suppose de pouvoir tabuler dans le champ d’édition, ce qui n’est pas évident, ni vraiment une bonne idée, puisque la tabulation sert à naviguer dans la page web. Les listes SPIP ont le défaut de ne permettre qu’une ligne de texte par item, ce qui est très limité par rapport à Markdown, qui accepte plusieurs paragraphes et autres blocs de code, citation, etc.

Dans les deux cas, les listes de définitions ne sont pas supportées par défaut, mais possibles via plugins.

Tableaux

SPIP Markdown [MDE]
|| Titre du tableau | Résumé ||
|{{titre}}|{{titre}}|{{titre}}|
| cellule | cellule | cellule |
| cellule | cellule | ^ |
| cellule | cellule | < |
titre    | titre  
-------- | --------
cellule  | cellule  
cellule  | cellule

La confection de tableaux en syntaxe simplifiée n’est jamais facile. SPIP propose une syntaxe basique permettant néanmoins de renseigner titre et résumé, et de gérer les cellules fusionnées. Le saviez-vous ? Markdown ne permet pas nativement de faire des tableaux et connaît plusieurs extensions palliant cette lacune. Mais voici le balisage léger que je recommanderais pour les tableaux.

Citations, code et poésie

Type SPIP Markdown
bloc de citation <quote>Citation en bloc</quote> > Citation en bloc
poésie <poesie>Poème en vers</poesie>
citation en ligne
bloc de code <cadre>texte ou code à copier-coller</cadre>    bloc de code
code en ligne <code>code (non interprété)</code> ``code (non interprété)``
formule <math>formule mathématique TeX</math>

SPIP propose davantage, pour les citations et pour le code, mais de façon assez spécifique et peut-être superflue.

Il y a des manques, dans les deux syntaxes, dans le traitement des citations, dont on aimerait pouvoir indiquer la source facilement. Mais ce qui manque le plus, ce sont les citations en ligne (<q>) et les titres d’œuvres (<cite>), que j’utilise assez régulièrement, qui sont complètement absents des deux syntaxes, imposant l’usage de la balise HTML correspondante.

Chose très appréciable dans les deux syntaxes, le code balisé en SPIP comme en Markdown, n’est pas interprété, ce qui permet d’inclure très facilement des exemples de code, juste par copié-collé. Par contre, la syntaxe Markdown est désagréable : un simple retrait génère un bloc de code, ce qui indente d’autant le résultat final. Inversement, le code libre, non balisé, est interprété, ce qui permet d’utiliser du HTML directement dans les textes, dans SPIP comme dans Markdown, quand cela s’avère nécessaire (pour des tableaux complexes, par exemple).

Médias

Type SPIP Markdown
image <imgXXX|alignement> ![alt](/chemin/vers/img.jpg "Titre optionnel")

Avec Markdown, la syntaxe d’insertion d’images ressemble à celle des liens, en plus illisible, et permet de préciser un titre et une alternative textuelle, ce qui n’est pas possible nativement en SPIP. Contrairement à SPIP, Markdown ne permet par d’ajuster les dimensions ni l’alignement, ce qui est pourtant bien pratique. Notons que SPIP permet l’insertion de tout type de documents, au besoin avec leur player (audio ou vidéo), possiblement en album. Mais l’insertion de médias me semble être un sujet en soi, à traiter en annexe.

Conclusion et perspectives

La syntaxe SPIP offre une plus grande couverture rédactionnelle que Markdown. Notes de bas de pages, formules mathématiques, tableaux, liens divers… tout ce qui est possible avec SPIP ne l’est pas avec Markdown, si bien que passer à Markdown serait ressenti comme une régression par les rédacteurs et rédactrices habitué·e·s à SPIP.

Bref, SPIP n’a pas grand chose à envier à Markdown : la gestion des listes, de leurs imbrications et peut-être les 6 niveaux de titres. Sans oublier la lisibilité de la syntaxe en texte brut, si agréable en Markdown ! Cette comparaison ne rend pas compte de la gestion des imbrications de Markdown, plutôt puissante, puisque les listes, citations, etc. peuvent contenir plusieurs paragraphes et autres blocs de code, de citation, etc. SPIP gagnerait à être amélioré de même.

Enfin, des centaines de personnes rédigent en SPIP et des dizaines de milliers d’articles existent qui sont structurés par cette syntaxe. Il n’est donc pas envisageable de s’affranchir complètement de la syntaxe native de SPIP. Cela implique au moins de la maintenir et au mieux de continuer à la faire évoluer pour l’améliorer.

Reste que d’aucuns aimeraient pouvoir copier-coller dans SPIP un texte rédigé en Markdown, sans devoir le reformater. Plusieurs possibilités :

a) Étendre la syntaxe SPIP avec les raccourcis Markdown ?

On observe aussi une absence de recouvrement des syntaxes : aucun raccourcis SPIP ne sert à autre chose dans Markdown et réciproquement, ce qui laisse imaginer une possible fusion des deux syntaxes. Il serait ainsi possible de rédiger un document en SPIP seul, ou d’y copier-coller du Markdown, et même d’y mélanger les deux. Attention aux conséquences d’un tel choix : en plus de pérenniser les défauts des deux, une telle syntaxe fusionnée serait un sacré méli-mélo à maintenir et faire évoluer. De plus elle occasionnerait un apprentissage spécifique, sans utilité par ailleurs pour les rédacteurs et rédactrices. Que produirait un copié-collé d’un texte ainsi formaté, dans un autre éditeur ?

Quitte à faire dans l’hybride et le spécifique, autant le faire bien, en établissant une syntaxe ne gardant que le meilleur, dégagée de la complétude d’héritage, tant pour ne pas pérenniser les défauts que pour préserver la simplicité. C’est cette option qui m’intéresse, parce qu’elle dessine un idéal, ce qui est toujours utile pour guider les choix.

Ceci dit n’empêche pas d’améliorer la syntaxe SPIP en adoptant partiellement les listes et titres Markdown par exemple.

b) Permettre la rédaction en Markdown (ou autre) dans SPIP ?

Un plugin SPIP pourrait permettre l’usage de Markdown, natif ou étendu, sur tout ou partie d’un site SPIP, en permettant de choisir la syntaxe de saisie, contenu par contenu, comme le permet Dotclear. Cela permettrait les copier-coller depuis les applis tierces en Markdown. Chaque contenu porterait donc mention de la syntaxe dans lequel il est rédigé.

Cette approche n’est pas à réserver à Markdown mais vaut pour toute autre syntaxe apportée par plugin additionnel. C’est l’approche la plus pérenne et la plus intéressante pour SPIP. Elle n’est cependant pas anodine car elle impacte l’interface de saisie.

c) Étendre Markdown avec SPIP ?

La syntaxe SPIP a des avantages qui gagneraient à être partagés et Markdown, par sa simplicité lacunaire et sa popularité, apparaît être une bonne base à compléter. Proposer une extension SPIP à Markdown, en permettrait un usage plus large qui rendrait meilleur service aux rédacteurs, puisque plus seulement dans SPIP où la syntaxe pour si riche qu’elle soit, reste confidentielle et méconnue.

Finalement, je serais assez partante pour un Markdown enrichi de la syntaxe SPIP des liens, abréviations et notes de bas de pages, sans oublier l’espace insécable, les retours chariot naturels, avec des citations et tableaux améliorés, le tout sans indentation.

Vos commentaires

  • Le 4 septembre 2014 à 09:57, par Jacques Pyrat En réponse à : Syntaxe SPIP versus Markdown

    Merci pour cet article !

    Et dans ma veille, je suis tombé ce matin justement sur un projet de standardisation de MarkDown.

  • Le 7 septembre 2014 à 04:06, par Joseph En réponse à : Syntaxe SPIP versus Markdown

    Ce projet de standardisation pour Markdown a bougé : http://commonmark.org/

    Merci Romy pour cet excellent article. A la lecture, il me semble que certains des manques de Markdown sont mieux complétés par Pandoc que par Markdown Extra que tu mentionnes dans certains tableaux.

    En particulier, je pense à la syntaxe des notes de bas de page in-line, la possibilité de préciser le language d’un code source, la gestion des tableaux (même si on est loin de certains avantages de SPIP ou de ta proposition de syntaxe), les liens internes et l’ajout d’identifiant et de classe sur les intertitres, la gestion de la numérotation des intertitres, plus d’options pour les tableaux, la gestion étendue de la numérotation des listes, ...

    Je constate par ailleurs que John MacFarlane qui est le porteur de Pandoc est également l’un des initiateurs de CommonMark.

    Certes, ce que permets aujourd’hui Pandoc a encore besoin d’être amélioré et la syntaxe SPIP a des avantages face à Pandoc.

    Par contre, il reste intéressant de voir les projets de standardisation de MarkDown en cours.

    Enfin, je signale que Pandoc commence à être de plus en plus utilisé dans une partie du monde académique (plutôt statistique mais pas uniquement) d’une part parce que Pandoc permet de convertir à la fois vers HTML et vers LaTeX, du fait que Pandoc gère les références bibliographiques, et enfin parce que Pandoc est maintenant intégré à RStudio une interface pour R, un langage statistique libre très utilisé.

    Tout cela pour dire qu’il me semblerait intéressant éventuellement d’inclure dans les tableaux de cet article certaines des syntaxes de Pandoc, juste pour alimenter la discussion.

    Bien cordialement et encore un grand merci

  • Le 7 septembre 2014 à 10:49, par Gluten En réponse à : Syntaxe SPIP versus Markdown

    Permettre la rédaction en Markdown (ou autre) dans SPIP ?

    Ce plugin permet justement de faire ça. Je pensais l’utiliser pour démarrer un blog.

    Les avantages que tu pointes conçernant la syntaxe Spip sont très justes mais à mon avis le grand point fort de Markdown tient à sa lisibilité « en l’état », bien résumée dans la présentation de sa phiosophie générale :

    Readability, however, is emphasized above all else. A Markdown-formatted document should be publishable as-is, as plain text, without looking like it’s been marked up with tags or formatting instructions.

    Ce qui en fait un format intéressant pour l’archivage : un texte au format MD dans mes archives numériques est lisible immédiatement avant même d’être transformé pour publication quelque part : Spip ou autre CMS, logiciel de PAO…

  • Le 17 novembre 2014 à 20:31, par Polo La Science En réponse à : Syntaxe SPIP versus Markdown

    La syntaxe que je préfère est celle de DokuWiki : https://www.dokuwiki.org/fr:syntax ll me semble qu’il y aurait pas mal de bonnes idées à reprendre.

  • Le 24 novembre 2014 à 11:48, par Romy Têtue En réponse à : Syntaxe SPIP versus Markdown

    Et voici, tout nouveau, un banc d’essai public, pour essayer la syntaxe de rédaction de SPIP : http://syntaxe.spip.net \o/

  • Le 10 juillet 2015 à 08:49, par ludovic En réponse à : Syntaxe SPIP versus Markdown

    A la base, markdown a juste pour objectif de standardiser la façon dont on conçoit des documents en texte brut. Idéal pour les e-mails / documentations qui sont stockés en .txt ; L’usage en remplacement de l’existant tels que les wiki et cms est récent. L’interêt n’est donc pas de remplacer, mais peut être standardiser en prenant markdown comme dénominateur commun.

  • Le 9 septembre 2016 à 11:05, par Valéry En réponse à : Syntaxe SPIP versus Markdown

    L’intérêt de reprendre Markdown peut être aussi de permettre dans la foulée l’intégration d’un WYSIWYG : il en existe plusieurs compatibles - aucun pour SPIP (le portage de CK Editor étant bancal et générant du HTML).

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom