Immersive Markdown

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 travail 88be1db5cd91591c5029e98792a87d6cddea55de. Les comportements propres à IMD Studio sont signalés séparément.

In this article

    Show more
    Show less

    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 .imd sans 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.

    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 ![Ajouter](Content/Images/add.png) 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 ;
    • img n’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 ;
    • video est 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 ![alt](source) 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, error et steps ;
    • un mot-clé inconnu est silencieusement converti en info, il faut donc éviter les

    variantes ou fautes de frappe ;

    • warning et error partagent 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 ![Ajouter](Content/Images/add.png) 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 de 1 ;
    • 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 :

    1. Utiliser uniquement les constructions marquées recommandé.
    2. Réserver [Jumbotron] et [DocumentList] aux couvertures de rayon.
    3. Ne pas utiliser :::steps, [[steps:continue]] ou [[steps:reset]] tant que leurs

    rendus ne sont pas corrigés ou complétés.

    1. Utiliser des lignes vides entre tous les blocs.
    2. Utiliser [[table]] plutôt qu’une table Markdown standard.
    3. Écrire \| pour afficher un pipe dans une cellule de tableau.
    4. Utiliser [[img:...]] pour une illustration de bloc et ![alt](...) pour une icône

    dans une phrase.

    1. Donner un texte alternatif utile à chaque image informative.
    2. Utiliser de préférence des vidéos WebM et une largeur comprise entre 1 et 100 %.
    3. Ne jamais inventer une directive ou un attribut absent de cette référence.
    4. 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 ")"
                     | "![" alt "](" source ")"
    
    

    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.