Listes ordonnées avec des marqueurs non numériques

Demande : Ajouter l’attribut « type » de

    (<ol>: The Ordered List element - HTML | MDN) à la liste blanche. Suggestion d’en faire de même pour « reversed » sur
      (<ol>: The Ordered List element - HTML | MDN), et pour « value » sur
    1. (<li>: The List Item element - HTML | MDN), pour des raisons similaires mais moins courantes.

      Objectif : Ces attributs sont destinés à être utilisés lorsque le marqueur des éléments de liste ordonnée transmet lui-même un sens au contenu de la liste. C’est généralement le cas lorsque les éléments de liste sont destinés à être référencés via ce marqueur. Cela contraste avec CSS list-style-type, qui est destiné aux cas où le choix du marqueur n’a pas de fonction significative. (Bien que je l’aie vu recommandé pour la localisation à l’échelle du forum, ce qui est vraiment génial !)

      Contexte : En tentant de citer un document de référence officiel, j’ai découvert une limitation apparente dans la mise en forme des listes qui empêche de le faire avec précision. Très souvent, les marqueurs de liste sont purement stylistiques. Cependant, ils sont parfois utilisés pour faciliter la référence dans des documents riches en listes. Par exemple, dans des documents officiels et juridiques, un élément de liste (ou sous-élément) peut être référencé par son marqueur : « Article I du document officiel, section 1(a)(i) ».

      Pour Markdown, la spécification CommonMark n’en fait pas mention et, en effet, elle ne spécifie que des chiffres, de 0 à 9. Mais bien que la plupart des interpréteurs n’autorisent pas les lettres pour les listes (y compris markdown-it), certains le font :

      Je ne suis pas certain qu’une méthode standard soit disponible en BBCode, dans la mesure où quoi que ce soit soit standard en BBCode. Je n’ai rien trouvé de plus avancé que de commencer à un chiffre arbitraire. De toute façon, les balises de liste BBCode ne semblent pas utilisées par Discourse.

      Avec HTML et HTML+style, aucun des deux ne produit le résultat correct :

3 « J'aime »

En regardant GitHub, la mise en œuvre de cela serait probablement simplement une question de les ajouter à cette liste :
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/white-lister.js#L181-L183

Cependant, je remarque que leur introduction laissera le convertisseur HTML vers Markdown inconscient de ces attributs. Mais comme démontré ci-dessus, markdown-it ne peut actuellement pas gérer la syntaxe Markdown représentant ces éléments de toute façon. Pour cela, il pourrait être souhaitable d’aller plus loin et d’implémenter des types de listes dans CommonMark…

2 « J'aime »

Il n’y a pas de plans pour cela.

L’absence de cette fonctionnalité rend très difficile la citation de documents officiels, de documents juridiques, de licences logicielles ou de tout autre élément utilisant des marqueurs non numériques pour les références documentaires.

1 « J'aime »

Ajoutez un conteneur à ces listes et un peu de CSS

Dans les publications, utilisez :

[wrap="letterlist"]
1. est le premier
2. est le deuxième.
3. est le troisième
[/wrap]

Dans votre thème, ajoutez :

.cooked div[data-wrap="letterlist"] {
  list-style: upper-alpha;
}
1 « J'aime »

C’est une bonne solution si l’objectif est d’ajouter des décorations arbitraires aux listes, mais l’attribut type du HTML est spécifiquement destiné à des situations sémantiquement significatives où la différence entre les marqueurs de liste va au-delà du simple aspect décoratif. D’après <ol>: The Ordered List element - HTML | MDN

Sauf si le type du numéro de la liste est important (comme dans les documents juridiques ou techniques où les éléments sont référencés par leur numéro ou lettre), utilisez plutôt la propriété CSS list-style-type .

C’est un besoin assez courant pour que, bien que l’attribut HTML ait été déprécié dans HTML 4.01 (avec la justification qu’il était purement stylistique), il ait été réintroduit par la suite dans HTML5 dans le but spécifique de coder les listes de référence telles que décrites par MDN.

1 « J'aime »

J’ai essayé d’utiliser cette solution et elle fonctionne, en corrigeant le CSS comme suit (la première ligne manquait d’un ol {):

.cooked div[data-wrap=\"letterlist\"] ol {
  list-style: upper-alpha;
}

Cependant, je n’arrive pas à le faire apparaître dans la fenêtre d’aperçu de l’éditeur, ce qui sera un problème pour la plupart de mes utilisateurs. J’ai essayé d’inspecter avec le navigateur web, et il semble que le CSS personnalisé ne soit pas chargé ou appliqué à l’aperçu (je ne suis pas un professionnel dans ce domaine, donc je pourrais me tromper).

Y a-t-il un moyen, selon vous, de résoudre ce problème, @Falco ?

1 « J'aime »

Je pense que le HTML est maintenant pris en charge :

  1. This thing
  2. Another thing
  3. Something else
<ol type="A">
<li> This thing
<li> Another thing
<li> Something else
</ol>

Et les types A, a, I, et i.

Aussi reversed et start= :

  1. Bread
  2. Chips
  3. Watermelon
<ol reversed start="36">
<li> Bread
<li> Chips
<li> Watermelon
</ol>

Il semble que l’utilisation du HTML de cette façon désactive l’interprétation de Markdown dans les <li>, ce qui n’est pas vraiment acceptable pour moi à proposer aux utilisateurs.

1 « J'aime »

Pour utiliser une mise en forme supplémentaire à l’intérieur, je pense que vous devriez également utiliser la version HTML, car elle n’aime pas le mélange :

  1. Pain
  2. Chips
  3. Pastèque
<ol reversed start=36>
<li> <b>Pain</b>
<li> <i>Chips</i>
<li> <del>Pastèque</del>
</ol>

Je sais. Comme je l’ai dit, je ne trouve pas cela acceptable de proposer à mes utilisateurs — cela change complètement le balisage juste parce que vous voulez une liste légèrement différente.

Ah, je suis désolé que ce ne soit pas une option acceptable pour vous.

Peut-être si vous démarrez un sujet Dev demandant de l’aide pour ajuster votre solution existante, quelqu’un pourra vous aider. :+1:

1 « J'aime »