Markdown

langage de balisage léger

Markdown est un langage de balisage léger créé en 2004 par John Gruber avec l'aide d'Aaron Swartz[1],[2]. Il a été créé dans le but d'offrir une syntaxe facile à lire et à écrire. Un document balisé par Markdown peut être lu en l'état sans donner l’impression d'avoir été balisé ou formaté par des instructions particulières.

Markdown
Markdown Syntax in gedit.png
Capture d'écran d'un éditeur de texte affichant un fichier au format Markdown
Markdown-mark.svg
Logo du langage Markdown
Caractéristiques
Extensions
.md, .markdownVoir et modifier les données sur Wikidata
Type MIME
text/markdownVoir et modifier les données sur Wikidata
PUID
fmt/1149
Développé par
Version initiale
Type de format
Site web

Un document balisé par Markdown peut être converti en HTML, en PDF ou en d'autres formats. Bien que la syntaxe Markdown ait été influencée par plusieurs filtres de conversion de texte existants vers HTML — dont Setext[3], atx[4], Textile, reStructuredText, Grutatext[5] et EtText[6] —, la source d’inspiration principale du Markdown est le format du courrier électronique en mode texte[7].

ÉvolutionsModifier

Depuis sa création originelle par John Gruber, Markdown n'a pas connu d'évolution notable de la part de ses auteurs. De plus, ce format n'a jamais été formellement standardisé.

Un certain nombre de variantes ont donc été développées par d'autres, afin de pallier ce qui a été perçu comme des limitations inhérentes à une syntaxe très simplifiée.

À titre d'exemples, on pourra citer MultiMarkdown[8] et GitHub Flavored Markdown[9]. Ce dernier est utilisé pour les articles et la documentation sur GitHub, mais a également été largement adopté sur plusieurs éditeurs de texte supportant le format Markdown au niveau de la coloration syntaxique ou de la prévisualisation.

Il existe également des greffons pour de nombreux logiciels, tels que « Markdown Here » pour Firefox et Chrome. Le système de gestion de contenu WordPress intègre désormais quelques éléments de ce langage nativement depuis la version 4.3.

En mars 2016, deux RFC ont été publiées dans un but de standardisation :

L'initiative CommonMark, débutée en 2012, vise à pallier le manque de standardisation et les ambiguïtés du format en créant une spécification fortement définie du langage. Elle est désormais utilisée par Discourse, GitLab, Reddit, Qt, Stack Overflow et Stack Exchange parmi d'autres[13].

Mises en œuvreModifier

Plusieurs mises en œuvre existent et ce dans différents langages de programmation : en Perl[14], en PHP[15], en Ruby[16], en Python[17], en Java[18], en C#[19], en Haskell[20], en Gambas, en R[21] et même en JavaScript[22], notamment avec strapdown.js[23]. Depuis la version 2.0 de Swift, il est aussi possible d'utiliser le Markdown dans ses playgrounds.

UsagesModifier

Le langage de balisage léger Markdown est utilisé dans de nombreuses applications, que ce soit des logiciels/éditeurs de code[24], des logiciels d'écriture[25], des plateformes de code[26],[27], ou encore des chaînes d'édition[28] avec l'addition d'autres logiciels. Les domaines concernés peuvent être le développement informatique (Markdown est habituellement utilisé pour formater le fichier README décrivant le code source d'un programme), la rédaction de documentation technique ou encore la publication académique[29].

C’est aussi le langage de balisage choisi par de nombreuses plateformes d’écriture collaborative, comme Authorea ou Manubot[30]. Il existe plusieurs logiciels permettant de rédiger le Markdown en temps réel sur le web, comme CodiMD, Etherpad ou Firepad.

Quelques exemplesModifier

Voici quelques exemples de syntaxe Markdown. Quelques balises HTML équivalentes sont données.

Cette liste n'est pas exhaustive.

FormatageModifier

En Markdown, l'emphase se manifeste indifféremment par les caractères _ et * utilisés en paire, ceci permettant une meilleure lisibilité du code si utilisé correctement. Il y a trois niveaux d'emphase.

Pour mettre du texte en emphase (balise HTML <em>), ce qui produit une mise en italique dans un navigateur courant :

*quelques mots*

ou :

_quelques mots_

Pour mettre du texte en grande emphase (balise HTML <strong>), ce qui produit une mise en gras dans un navigateur courant, on utilisera des paires doubles (__ ou **) :

**plus important**

ou :

__également important__

Pour mettre du texte au dernier niveau d'emphase (balise HTML <strong> et <em>), ce qui produit une mise en gras et italique dans un navigateur courant:

___très important___

ou :

_**tout aussi très important**_

Pour mettre du code dans le texte (balise HTML <code>) :

(note : le caractère ` est un accent grave (en anglais backtick), par défaut AltGr + 7 sur les claviers AZERTY français)

Mon texte `code` fin de mon texte

Ou sur plusieurs lignes avec coloration syntaxique selon le langage mis en préfixe :

(note : le caractère ` est un accent grave (en anglais backtick), par défaut AltGr + 7 sur les claviers AZERTY français)

```php
Mon code PHP en couleurs
sur plusieurs lignes
```

Pour un paragraphe de code, mettre quatre espaces devant :

    Première ligne de code
    Deuxième ligne

Comme dans les courriels, il est possible de faire des citations :

> Ce texte apparaîtra dans un élément HTML <blockquote>.

Pour faire un nouveau paragraphe (balise HTML <p>), sauter deux lignes, c'est à dire laisser une ligne vide entre les deux paragraphes. Sauter une seule ligne dans le texte d'origine n'aura aucun effet à l'affichage (l'affichage sera en continu).

Premier paragraphe

Deuxième paragraphe   

Pour faire un simple retour à la ligne, mettre deux espaces en fin de ligne (balise HTML <br>).

ListesModifier

Sauter une ligne avant le début de la liste.

Pour créer une liste non ordonnée (balise HTML <ul>) :

* Pommes
* Poires
    * Sous élément avec au moins quatre espaces devant.
    

Et une liste ordonnée (balise HTML <ol>) :

1. mon premier
2. mon deuxième

Et une liste en mode case à cocher

- [ ] Case non cochée
- [x] Case cochée

TitresModifier

Les titres sont créés avec un certain nombre de # (croisillon) avant le titre, qui correspondent au niveau de titre souhaité (le HTML propose 6 niveaux de titres de <h1> à <h6>)

# un titre de premier niveau
#### un titre de quatrième niveau

Pour les deux premiers niveaux de titre (<h1> et <h2>), il est également possible de souligner le titre avec des = ou des - (leur nombre réel importe peu, mais il doit être supérieur à 2).

Titre de niveau 1
=====================
Titre de niveau 2
-------------------

TableauxModifier

Pour créer des tableaux (balises HTML <tr> et <th>)

| Titre 1       |     Titre 2     |        Titre 3 |
| :------------ | :-------------: | -------------: |
| Colonne       |     Colonne     |        Colonne |
| Alignée à     |   Alignée au    |      Alignée à |
| Gauche        |     Centre      |         Droite |

LiensModifier

Pour créer des liens (balise HTML <a>) :

[texte du lien](url_du_lien "texte pour le titre, facultatif")

(Note : il n'y a pas d'espace entre le crochet fermant et la parenthèse ouvrante. Il faut écrire ..lien](url.. et non ..lien] (url.. )

ImagesModifier

Pour afficher une image (balise HTML <img>) :

![Texte alternatif](url_de_l'image "texte pour le titre, facultatif")

(Note : il n'y a pas d'espace entre le crochet fermant et la parenthèse ouvrante. Il faut écrire ..lien](url.. et non ..lien] (url.. )

AnnexesModifier

Articles connexesModifier

Liens externesModifier

RéférencesModifier

  1. « Markdown »
  2. « Markdown » (version du 2 avril 2004 sur l'Internet Archive)
  3. Setext.
  4. atx.
  5. Grutatext.
  6. EtText.
  7. « Daring Fireball: Markdown Syntax Documentation », sur daringfireball.net (consulté le 24 septembre 2020)
  8. « MultiMarkdown », sur fletcherpenney.net (consulté le 22 septembre 2020)
  9. (en) « GitHub Flavored Markdown ».
  10. (en) Sean Leonard <dev+ietf@seantek.com>, « The text/markdown Media Type », sur tools.ietf.org (consulté le 23 octobre 2020)
  11. (en) Sean Leonard <dev+ietf@seantek.com>, « Guidance on Markdown: Design Philosophies, Stability Strategies, and Select Registrations », sur tools.ietf.org (consulté le 23 octobre 2020)
  12. « Markdown Variants », sur www.iana.org (consulté le 25 septembre 2020)
  13. (en) « Common Mark », sur commonmark.org.
  14. Perl (implémentation de référence).
  15. PHP Markdown (Markdown en PHP).
  16. BlueCloth (Markdown en Ruby).
  17. Markdown en Python.
  18. markdownj (Markdown en Java).
  19. Markdown.NET (Markdown en C# et .NET).
  20. pandoc (Markdown en Haskell).
  21. (en) R Markdown.
  22. showdown (Markdown en JavaScript).
  23. strapdown.js.
  24. (en) « The 10 Best Markdown Editors of 2018 – Shopify », sur Web Design and Development Blog | Web Design Trends, Tips, and More by Shopify Partners. (consulté le 21 octobre 2019)
  25. Marcello Vitali-Rosati, « Stylo : un éditeur de texte pour les sciences humaines et sociales », sur Culture numérique, (consulté le 21 octobre 2019)
  26. « Mastering Markdown · GitHub Guides », sur guides.github.com (consulté le 21 octobre 2019)
  27. (en) « Markdown Guide », sur GitLab (consulté le 21 octobre 2019)
  28. (en-US) « Interview with Eric Gardner, Getty Publications », sur the New Dynamic, (consulté le 21 octobre 2019)
  29. Collectif, « Markdown et Zotero », sur Le blog Zotero francophone (consulté le 21 octobre 2019)
  30. (en) Jeffrey M. Perkel, « Synchronized editing: the future of collaborative writing », Nature, vol. 580, no 7801,‎ , p. 154–155 (DOI 10.1038/d41586-020-00916-6, lire en ligne, consulté le 12 septembre 2020)