Immersive Markdown
- Type non défini
Référence de l’Immersive Markdown réellement pris en charge par la bibliothèque
GraphicStream.GSDN.Business.État de la bibliothèque analysée le 19 août 2026, branche
main, base de travail88be1db5cd91591c5029e98792a87d6cddea55de. Les comportements propres à IMD Studio sont signalés séparément.
Dans cet article
1. Objet et périmètre
IMD est un sous-ensemble de Markdown complété par des blocs propres à la documentation GraphicStream : médias dimensionnés, encadrés sémantiques, tableaux, directives de page de rayon, etc.
Cette référence distingue trois niveaux de support :
| Statut | Signification |
|---|---|
| Recommandé | Analysé, sérialisé et rendu par la chaîne IMD courante. À utiliser dans les nouveaux documents. |
| Contextuel | Fonctionne seulement dans un contexte précis, notamment une page de couverture de rayon. |
| Expérimental / historique | Présent dans le code, mais incomplet, non structuré ou incohérent entre l’aperçu IMD Studio et le site web. À ne pas utiliser sans test ciblé. |
La source de vérité est le couple ImdSerializer / ImdInlineParser. Le site web passe
ensuite le document structuré à ImdHtmlRenderer, puis à
DocumentationHtmlPostProcessor.
2. Exemple minimal recommandé
Dans cet exemple, le champ Document.Title contient « Installer le composant ». Cette
valeur n’est pas répétée dans le contenu IMD : Objectif et Procédure sont les deux
chapitres de premier niveau du document.
[[type:Formation]]
# Objectif
Cette procédure explique comment **installer** puis *valider* le composant.
:::info
Prévoyez un compte disposant des droits d’administration.
:::
# Procédure
1. Téléchargez le paquet.
2. Exécutez `setup.exe`.
3. Validez avec <kbd>Enter</kbd>.
[[img:Content/Images/installation.png|75%|Écran de validation]]
```powershell
Get-Service -Name "GraphicStream*"
```
[[HR]]
Pour aller plus loin, consultez [la configuration avancée](/configuration-avancee).
3. Règles générales d’écriture
- Enregistrer le contenu en texte UTF-8. IMD Studio exporte des fichiers
.imdsans BOM. - Séparer les blocs par une ligne vide. Le parseur tolère parfois leur absence, mais une
ligne vide évite qu’un texte soit fusionné dans le paragraphe précédent.
- Placer les titres et les clôtures
:::en début de ligne, sans indentation. - Réserver les directives de bloc (
[[img:...]],[[video:...]],[[HR]], etc.) à une
ligne dédiée, sauf pour les variantes historiques explicitement signalées.
- Les retours à la ligne consécutifs sans ligne vide appartiennent au même paragraphe ;
dans le HTML, ils sont normalement affichés comme des espaces.
- IMD ne possède pas de mécanisme général d’échappement. Dans une cellule de tableau,
\| représente toutefois un pipe littéral et \\ un antislash littéral. Éviter les
autres délimiteurs réservés (], ), *, accent grave) dans les paramètres concernés.
- Les mots-clés dont la casse est explicitement indiquée comme libre peuvent être écrits
en majuscules ou minuscules. Pour les autres, utiliser exactement la forme documentée.
4. Blocs de contenu
4.1 Paragraphes — recommandé
Un paragraphe est un ensemble de lignes de texte séparé des autres blocs par une ligne vide.
Premier paragraphe avec du texte.
Deuxième paragraphe.
Deux lignes adjacentes sont regroupées dans le même paragraphe :
Cette ligne et
cette ligne forment un seul paragraphe.
4.2 Titres — recommandé
Le titre général est porté par le champ Document.Title et ne doit pas être répété dans
le contenu IMD. Un titre de niveau 1 (#) représente donc un chapitre du document ; un
titre de niveau 2 (##) représente une section de ce chapitre, et ainsi de suite.
Les six niveaux ATX sont pris en charge. Il faut entre un et six caractères #, suivis
d’au moins une espace.
# Titre de niveau 1
## Titre de niveau 2
### Titre de niveau 3
#### Titre de niveau 4
##### Titre de niveau 5
###### Titre de niveau 6
Les éléments inline (gras, italique, code, lien, etc.) sont autorisés dans un titre. Les titres soulignés de style Setext ne sont pas reconnus.
Les titres ne sont pas numérotés par défaut. La directive [[headings:numbered]]
active la numérotation automatique pour les titres suivants ; la directive
[[headings:unnumbered]] revient ensuite aux titres ordinaires :
# Introduction sans numéro
[[headings:numbered]]
# Premier chapitre
## Première section
## Deuxième section
### Première sous-section
# Deuxième chapitre
[[headings:unnumbered]]
# Annexe sans numéro
Le rendu affiche respectivement 1. Premier chapitre, 1.1 Première section,
1.2 Deuxième section, 1.2.1 Première sous-section et 2. Deuxième chapitre, tandis
que l’introduction et l’annexe restent sans numéro. Chaque nouvelle activation repart
à 1. Les numéros ne sont pas enregistrés dans la source IMD : il ne faut donc pas les
saisir manuellement dans le texte des titres.
4.3 Sommaire du document — recommandé
La directive suivante insère le sommaire exactement à l’endroit où elle apparaît :
[[sommaire]]
Elle doit occuper seule sa ligne. Le générateur produit la structure HTML
Summary Togglable attendue par le script du site. À l’affichage, ce script remplit la
liste avec tous les titres de niveau 1 (#) du document et gère automatiquement les
actions « Afficher plus » et « Réduire ». Les libellés sont adaptés au français, à
l’anglais, à l’allemand et à l’italien.
Le titre général porté par Document.Title n’est pas ajouté au sommaire. Une balise
placée dans un bloc de code reste du texte littéral et ne crée pas de sommaire.
4.4 Séparateur horizontal — recommandé
[[HR]]
Le mot-clé n’est pas sensible à la casse et doit occuper seul sa ligne. La syntaxe
Markdown --- n’est pas interprétée comme un séparateur.
4.5 Bloc de code — recommandé
Utiliser une clôture d’au moins trois accents graves. Le langage est facultatif.
```csharp
var message = "Bonjour";
Console.WriteLine(message);
```
Sans langage :
```
texte préformaté
```
Le nom du langage devient une classe language-<langage> destinée à Highlight.js. Le
contenu est encodé avant le rendu HTML. La clôture doit employer le même caractère et
être au moins aussi longue que l’ouverture. Une clôture à quatre accents graves permet
donc de montrer un bloc à trois accents graves sans fermer prématurément le bloc externe.
Les syntaxes IMD présentes dans le contenu restent du code littéral et ne sont pas
interprétées comme des directives.
Le langage spécial mermaid produit un diagramme Mermaid dans le rendu HTML :
```mermaid
flowchart LR
A[Début] --> B{Validation}
B -->|Valide| C[Publication]
B -->|Erreur| A
```
affiche :
flowchart LR
A[Début] --> B{Validation}
B -->|Valide| C[Publication]
B
Le diagramme est généré côté navigateur avec Mermaid 11. Si le script Mermaid ne peut pas être chargé ou si le diagramme est invalide, sa source reste affichée dans le bloc. Le contenu Mermaid demeure littéral pour le parseur IMD et n’est pas envoyé au service de traduction.
Pour plus d'informations sur Mermaid : Site Officiel
4.6 Citation — recommandé
Chaque ligne d’une citation commence par >. Une ligne contenant seulement > sépare
deux paragraphes dans la même citation.
> Première partie avec **mise en forme**.
>
> Deuxième partie de la citation.
4.7 Listes non ordonnées — recommandé
Les marqueurs -, * et + sont acceptés. La sérialisation IMD les normalise en -.
- Premier élément
- Deuxième élément
- Troisième élément avec **mise en forme**
4.8 Listes ordonnées — recommandé
1. Première étape
2. Deuxième étape
3. Troisième étape
Le numéro saisi n’est pas conservé comme valeur métier : lors d’une resérialisation, la
liste est renumérotée à partir de 1.
4.9 Listes à cases à cocher — recommandé
Ajouter [ ] ou [x] immédiatement après le marqueur de liste. La casse de x est
libre.
- [ ] Préparer le paquet
- [x] Valider la configuration
- [X] Publier le document
Le rendu HTML produit des cases désactivées : elles expriment un état documentaire, pas un contrôle interactif. Le marqueur de case n’est pas inclus dans le texte envoyé au service de traduction. Une liste peut mélanger des éléments normaux et des éléments à case, mais une liste homogène est préférable pour la lecture.
La syntaxe fonctionne également après un marqueur ordonné (1. [ ] ...), mais la forme
non ordonnée est recommandée pour les listes de tâches.
4.10 Listes imbriquées — recommandé avec restrictions
Indenter la sous-liste avec des espaces. Une tabulation compte comme quatre espaces.
1. Préparer
- Télécharger le paquet
- Vérifier sa signature
2. Installer
1. Lancer l’installeur
2. Choisir le profil
Seules les sous-listes sont actuellement analysées comme blocs enfants d’un élément. Un paragraphe, un tableau, une image ou un bloc de code indenté sous un élément de liste n’est pas rattaché de façon fiable à cet élément. Éviter également de mélanger des marqueurs ordonnés et non ordonnés au même niveau sans ligne de séparation.
4.11 Tableau IMD — recommandé
Le tableau doit être entouré de [[table]] et [[/table]]. La première ligne valide est
l’en-tête ; toutes les suivantes constituent le corps.
[[table]]
| Paramètre | Type | Description |
| Endpoint | `string` | Adresse du service |
| ContentType | `string \| null` | Type MIME connu ou absent |
[[/table]]
Règles :
- les délimiteurs de début et de fin ne sont pas sensibles à la casse ;
- chaque ligne de données doit commencer et finir par
|après suppression des espaces
extérieurs ;
- les cellules acceptent le sous-ensemble inline IMD ;
- les largeurs et alignements de colonnes ne sont pas configurables dans la syntaxe ;
- les pipes placés au début et à la fin d’une ligne, ainsi qu’entre les cellules, sont
des délimiteurs et restent écrits | sans antislash ;
\|insère un caractère|dans la cellule sans créer de nouvelle colonne ;\\insère un antislash littéral ;- lors d’une resérialisation, les pipes et antislashs contenus dans les cellules sont
automatiquement rééchappés ;
- les lignes non conformes situées dans le bloc sont ignorées ;
- la table Markdown standard avec ligne
| --- | --- |n’est pas analysée par la chaîne
de rendu courante. Ne pas ajouter de ligne de séparation Markdown.
5. Éléments inline
Les éléments inline sont reconnus dans les paragraphes, titres, éléments de liste et cellules de tableau.
5.1 Gras — recommandé
Texte **important**.
Seule la forme à doubles astérisques est prise en charge. __important__ reste du texte.
5.2 Italique — recommandé
Texte *mis en valeur*.
Seule la forme à astérisques est prise en charge. _texte_ reste du texte.
Le gras, l’italique et le barré peuvent contenir d’autres éléments inline simples. Le parseur est volontairement léger : préférer des imbrications courtes et non ambiguës.
**Texte *très* important**
5.3 Barré — recommandé
Cette option est ~~obsolète~~ remplacée par la nouvelle API.
Le contenu est rendu avec l’élément HTML <del>. Il peut lui-même contenir du gras, de
l’italique, du code ou d’autres éléments inline simples.
5.4 Code inline — recommandé
Utilisez la propriété `ConnectionString`.
Le délimiteur peut contenir plusieurs accents graves. Il doit être plus long que la plus longue suite d’accents graves présente dans le contenu. Les syntaxes IMD placées dans un code inline restent littérales.
Utilisez ``une valeur contenant un ` accent grave``.
5.5 Touche de clavier — recommandé
Appuyez sur <kbd>Ctrl</kbd> puis sur <kbd>Enter</kbd>.
Les balises doivent être écrites en minuscules. Le texte interne est traité comme une
étiquette de touche, pas comme du Markdown. Les caractères &, < et > sont protégés
lors de la sérialisation.
5.6 Lien — recommandé
[Documentation publique](https://graphicstream.fr/)
[Configuration avancée](/DeveloperNetworks/fr/mon-rayon/configuration)
Le libellé peut contenir des éléments inline. L’URL ne doit pas contenir ).
Le modèle C# prévoit des attributs de lien, mais le parseur texte courant ne les extrait pas. Ne pas utiliser la forme suivante :
[Lien](https://example.test|target=_blank)
Elle serait interprétée comme une URL littérale contenant |target=_blank.
5.7 Image Markdown inline — recommandé pour une image dans le texte
Cliquez sur l’icône  pour continuer.
Cette forme produit une image inline avec un texte alternatif. Elle ne permet pas de
régler sa largeur et sa source ne doit pas contenir ).
Le parseur accepte aussi une balise HTML <img src="..." alt="..."> en minuscules,
avec attributs entre guillemets doubles. Elle est normalisée en image Markdown et les
autres attributs sont perdus ; la forme Markdown est donc préférable.
6. Médias IMD
6.1 Image de bloc — recommandé
Forme minimale :
[[img:Content/Images/schema.png]]
Avec largeur :
[[img:Content/Images/schema.png|60%]]
Avec largeur et légende/texte alternatif :
[[img:Content/Images/schema.png|60%|Architecture générale]]
La largeur accepte techniquement des chiffres avec ou sans %. La sérialisation produit
toujours le suffixe %. Utiliser une valeur comprise entre 1 et 100.
Pour fournir une légende sans choisir de largeur visuelle particulière, utiliser une valeur explicite :
[[img:Content/Images/schema.png|100%|Architecture générale]]
Contraintes :
- la directive doit occuper seule sa ligne ;
imgn’est pas sensible à la casse ;- la source ne peut contenir ni
|ni]; - la légende ne peut pas contenir
]; - le rendu utilise la légende comme attribut HTML
alt; il ne produit pas de
<figcaption> visible.
6.2 Vidéo de bloc — recommandé avec réserve de format
Forme minimale, largeur de 100 % :
[[video:Content/Videos/demonstration.webm]]
Avec largeur :
[[video:Content/Videos/demonstration.webm|50%]]
Contraintes :
- la directive doit occuper seule sa ligne ;
videoest sensible à la casse : conserver les minuscules ;- la largeur, lorsqu’elle est présente, doit être un entier suivi de
%; - la source ne peut contenir ni
|ni]; - utiliser une largeur de
1à100; - le rendu de bloc actuel génère une vidéo en lecture automatique, en boucle et muette ;
- la source HTML est déclarée avec le type
video/webm. Le format WebM est donc le choix
le plus sûr dans l’état actuel du renderer.
6.3 Résolution des chemins de médias
- Une URL absolue (
https://...), une URL relative au protocole (//...) ou une ancre
(#...) est conservée.
- Un chemin relatif est résolu à partir de la base de médias configurée par l’application.
- Les antislashs sont normalisés en slashs lors de la résolution.
- Le volet Médias d’IMD Studio insère les formes
[[img:chemin]]et
[[video:chemin]].
- L’import automatique de médias recherche ces deux directives personnalisées. Une image
écrite uniquement avec  n’est pas découverte par cet importeur.
7. Blocs sémantiques
7.1 Information — recommandé
:::info
Cette opération nécessite une connexion réseau.
:::
7.2 Avertissement — recommandé
:::warning
La suppression est irréversible.
:::
7.3 Succès — recommandé
:::success
Le service est maintenant opérationnel.
:::
7.4 Erreur — recommandé
:::error
Arrêtez la procédure si la vérification échoue.
:::
Le contenu d’un bloc sémantique est lui-même composé de blocs IMD : paragraphes, listes, images, code, tableaux ou autres encadrés.
Règles :
- l’ouverture est
:::mot-cléseule sur sa ligne ; - la fermeture est
:::seule sur sa ligne ; - ouverture et fermeture doivent commencer en première colonne ;
- les mots-clés reconnus sont
info,warning,success,erroretsteps; - un mot-clé inconnu est silencieusement converti en
info, il faut donc éviter les
variantes ou fautes de frappe ;
warningeterrorpartagent actuellement le même style HTML d’alerte ; leur sens
éditorial reste distinct.
7.5 Bloc steps — expérimental, ne pas utiliser
:::steps
1. Première étape
2. Deuxième étape
:::
Le parseur crée bien un bloc sémantique Steps, mais le renderer HTML courant ignore le
bloc entier, contenu compris. Cette construction n’est donc pas utilisable dans un
document publié tant que le rendu n’est pas corrigé.
8. Numérotation spéciale des étapes — expérimentale
Deux directives sont analysées :
[[steps:continue]]
1. Continuer la numérotation précédente
[[steps:reset]]
1. Recommencer à un
Elles sont sensibles à la casse et ne doivent comporter ni indentation ni espaces supplémentaires.
IMD Studio les prend en compte dans son aperçu WPF. En revanche, le parseur les transforme
en blocs dédiés que le renderer HTML actuel ne traite pas ; elles n’appliquent donc pas
les classes Step / Step Reset sur le site. Ne pas les utiliser comme dépendance de
mise en page tant que cette divergence n’est pas corrigée.
9. Directives de page de couverture de rayon
Ces directives sont contextuelles. Elles fonctionnent dans Shelving.CoverPageMarkup
via ImdLibraryRenderer. Dans un document éditorial normal, le renderer générique les
ignore.
9.1 Jumbotron — contextuel
[Jumbotron]
Avec classes CSS :
[Jumbotron|CSS=HeroBackground|CoverImageCSS=CoverContain]
La directive génère la bannière du rayon à partir de ses métadonnées : nom, description
et CoverImage.
Paramètres reconnus :
| Paramètre | Effet |
|---|---|
CSS |
Classe ajoutée au conteneur externe du jumbotron. |
CoverImageCSS |
Classe ajoutée au conteneur de l’image de couverture. |
Le mot Jumbotron et les noms de paramètres ne sont pas sensibles à la casse. Les
paramètres inconnus sont ignorés. Éviter de répéter une même clé : l’analyse lèverait une
erreur de dictionnaire.
9.2 Liste de documents — contextuel
Tous les documents directs du rayon, triés par leur propriété Order :
[DocumentList]
Une sélection, dans l’ordre défini par les documents eux-mêmes :
[DocumentList|Slugs=installation,configuration,depannage]
Les slugs sont séparés par des virgules et comparés sans tenir compte de la casse. La
directive ne change pas l’ordre de tri : la liste reste ordonnée par Document.Order.
DocumentList et Slugs ne sont pas sensibles à la casse.
9.3 Exemple de couverture complète
[Jumbotron|CSS=HasBackground|CoverImageCSS=Contain]
## Ressources disponibles
Choisissez le document correspondant à votre besoin.
[DocumentList]
10. Jetons historiques post-traités
Ces jetons ne sont pas représentés par des nœuds IMD dédiés. Ils transitent comme texte puis sont réécrits après le rendu HTML. Ils sont plus fragiles lors d’une traduction ou d’une resérialisation structurée.
10.1 Type de document — utilisé actuellement, mais non structuré
[[type:Formation]]
Le site le transforme en <span class="DocType">Formation</span>. Le modèle de nouveau
cours d’IMD Studio utilise cette forme. La valeur est libre.
Comme le jeton est vu comme du texte humain par le service de traduction, vérifier qu’une
traduction automatique n’a pas modifié sa structure [[type:...]].
10.2 Touche alternative — historique
Appuyez sur [[kbd:Enter]].
Cette forme est post-traitée, mais <kbd>Enter</kbd> est préférable car elle est comprise
par le modèle IMD, conservée lors des transformations et rendue aussi dans IMD Studio.
10.3 Média à la taille du texte — historique
Dans un paragraphe :
Cliquez sur [[img:Content/Images/add.png|text]] pour ajouter un élément.
Le post-traitement applique la classe SameFontSize. Cette variante n’est pas un bloc
image structuré. Préférer  pour un nouvel usage, sauf
si la classe historique est précisément requise.
Une variante analogue existe pour la vidéo ([[video:chemin|text]]), mais elle n’est pas
recommandée.
11. Markdown non pris en charge
IMD n’utilise pas le moteur Markdown complet pour analyser les documents. Les constructions suivantes ne doivent pas être utilisées dans les nouveaux contenus :
| Construction | État actuel / alternative |
|---|---|
Titres Setext (Titre puis ===) |
Non reconnu ; utiliser # Titre. |
Séparateur ---, *** |
Non reconnu ; utiliser [[HR]]. |
Gras __texte__ |
Non reconnu ; utiliser **texte**. |
Italique _texte_ |
Non reconnu ; utiliser *texte*. |
Table Markdown avec séparateur --- |
Non prise en charge par la chaîne courante ; utiliser [[table]]. |
| HTML libre | Encodé comme texte, sauf les formes <kbd> et <img> décrites. |
Autolien <https://...> |
Non reconnu comme lien ; utiliser [libellé](url). |
| Image de référence ou lien de référence | Non reconnu ; utiliser les formes inline directes. |
| Notes de bas de page | Non reconnues. |
Attributs de lien |clé=valeur |
Modélisés mais non analysés depuis le texte. |
12. Contraintes de traduction et d’aller-retour
Le service de traduction structurée traduit :
- les titres et paragraphes ;
- les textes des listes, y compris les éléments à case, et des cellules ;
- le contenu des passages barrés ;
- les libellés de liens ;
- les textes alternatifs des images inline ;
- la légende des images de bloc ;
- le contenu des encadrés sémantiques.
Il ne traduit normalement pas les URL, chemins de médias, blocs de code, codes inline, touches clavier ni paramètres de directives.
Lors d’un aller-retour désérialisation → sérialisation :
- les fins de ligne sont normalisées pour la plateforme et une fin de ligne finale est
ajoutée ;
- les blocs sont séparés par une ligne vide ;
- les listes utilisent
-et les listes ordonnées repartent de1; - les états de cases sont conservés sous la forme
[ ]ou[x]; - les pipes et antislashs des cellules sont rééchappés avec
\; - les largeurs d’image sont écrites avec
%; - une image HTML inline est réécrite en image Markdown ;
- les paramètres non compris, les syntaxes historiques et les constructions Markdown non
prises en charge peuvent être traités comme du simple texte.
13. Contrat d’écriture pour l’équipe et les assistants IA
Pour produire un document IMD fiable :
- Utiliser uniquement les constructions marquées recommandé.
- Réserver
[Jumbotron]et[DocumentList]aux couvertures de rayon. - Ne pas utiliser
:::steps,[[steps:continue]]ou[[steps:reset]]tant que leurs
rendus ne sont pas corrigés ou complétés.
- Utiliser des lignes vides entre tous les blocs.
- Utiliser
[[table]]plutôt qu’une table Markdown standard. - Écrire
\|pour afficher un pipe dans une cellule de tableau. - Utiliser
[[img:...]]pour une illustration de bloc etpour une icône
dans une phrase.
- Donner un texte alternatif utile à chaque image informative.
- Utiliser de préférence des vidéos WebM et une largeur comprise entre 1 et 100 %.
- Ne jamais inventer une directive ou un attribut absent de cette référence.
- Après génération, vérifier le document dans les deux aperçus d’IMD Studio lorsque la
mise en page dépend d’une extension IMD.
14. Gabarit de document
[[type:Formation]]
[[sommaire]]
[[headings:numbered]]
# Introduction
Présentez le contexte, l’objectif et le résultat attendu.
:::info
Indiquez ici une information importante ou un prérequis.
:::
# Prérequis
- Premier prérequis
- Deuxième prérequis
- [ ] Validation préalable à effectuer
# Procédure
## Étape 1 — Préparer
Expliquez l’action à réaliser.
1. Première action.
2. Deuxième action.
3. Vérification attendue.
[[img:Content/Images/exemple.png|75%|Description utile de l’image]]
## Étape 2 — Configurer
```
exemple de configuration
```
:::warning
Décrivez ici une contrainte ou un risque.
:::
# Référence
[[table]]
| Élément | Valeur | Description |
| OptionA | `true` | Active la fonctionnalité |
| OptionB | `string \| null` | Valeur facultative |
[[/table]]
# Validation
Décrivez le contrôle final et le résultat attendu.
[[HR]]
Consultez [la ressource associée](/chemin/du/document).
[[headings:unnumbered]]
15. Résumé de la grammaire recommandée
Forme de Backus-Naur :
document := bloc*
bloc := paragraphe
| titre
| directive_titres
| sommaire
| citation
| séparateur
| code
| liste
| tableau_imd
| image_bloc
| vidéo_bloc
| bloc_sémantique
| directive_couverture
titre := "#"{1,6} ESPACE inline*
directive_titres := "[[headings:numbered]]" | "[[headings:unnumbered]]"
sommaire := "[[sommaire]]"
séparateur := "[[HR]]"
image_bloc := "[[img:" source ("|" largeur ("|" légende)?)? "]]"
vidéo_bloc := "[[video:" source ("|" entier "%")? "]]"
tableau_imd := "[[table]]" ligne_table+ "[[/table]]"
ligne_table := "|" cellule ("|" cellule)* "|"
cellule := (caractère | "\|" | "\\")*
élément_liste := marqueur_liste ("[ ]" | "[x]")? inline*
bloc_sémantique := ":::" ("info" | "warning" | "success" | "error")
bloc*
":::"
inline := texte
| "**" inline+ "**"
| "*" inline+ "*"
| "~~" inline+ "~~"
| "`"+ code "`"+
| "<kbd>" touche "</kbd>"
| "[" inline+ "](" url ")"
| ""
Cette grammaire est volontairement descriptive. En cas d’ambiguïté, les règles et restrictions détaillées dans les sections précédentes prévalent.