GitHub dérange sataniquement avec Markdown - change 666 en DCLXVI

729

Mon référentiel GitHub n'a rien d'autre qu'un readme. Dans ce fichier Lisez-moi, localement, j'ai écrit ceci:

Factoids:
 - There are about six different ways to do everything in Forked.
 - There are actually six different ways to enter loops.
 - There are six directionals and six I/O commands.
 - 666. ha.

Accent sur la dernière ligne. Ce que GitHub a décidé de montrer ne l' était pas666 .

dclxvi

DCLXVIest le chiffre romain de 666 .

Cela m'a vraiment effrayé. Mon fichier local et le fichier brut s'affichent tous les deux 666.

Que fait GitHub et pourquoi l'indentation sur la liste non numérotée est-elle foirée? Est-ce un œuf de Pâques ou un insecte satanique?

MD XF
la source
15
L'avez-vous essayé - 5. whateverdevrait devenir ·V whateversi je le vois correctement
Hans Koch
8
Je viens de me tester et tous les nombres sont convertis en chiffres romains: github.com/NoahCristino/Forked/tree/…
Noah Cristino
27
@immibis utilisant des tirets pour les balles est une démarque standard n'est-ce pas?
ESR
16
@EdmundReed La notation de liste imbriquée n'est-elle pas également une démarque standard?
user253751
4
Ne vous inquiétez pas non plus du nombre latin réel. Ce nombre ne signifie probablement pas du tout quelle est la compréhension commune en raison d'une erreur de traduction.

Réponses:

474

Cela semble être suivi par le problème 991 de github / balisage , où sur la sous-liste ordonnée, les chiffres décimaux se transforment automatiquement en chiffres romains.

J'ai trouvé la cause du problème. C'est CSS

Il s'agit de la manière attendue pour les listes ordonnées imbriquées de s'afficher en HTML.

Ce n'est pas prévu en HTML. https://jsfiddle.net/tf5jtv8s

Nous n'apportons aucune modification au comportement HTML par défaut.

ol ol,ul ol{list-style-type:lower-roman}

Je ne connais pas CSS mais ma compréhension est que c'est la cause du problème. Je peux obtenir le résultat attendu en désactivant CSS. (Je viens de mon mobile, je ne peux donc pas utiliser l'inspecteur de navigateur)

Comme mentionné dans " Une spécification formelle pour GitHub Flavored Markdown ", la spécification GitHub Markdown GFM: GitHub Flavored Markdown Spec est construite au-dessus de la spécification CommonMark .

Et comme Tommi Kaikkonen l'a mentionné dans sa réponse , la liste ordonnée est due au point suivant 666. Voir la section 5.2 des spécifications GFM .

Comme mentionné dans la section 6.1 , tout caractère de ponctuation ASCII peut être échappé par une barre oblique inverse, pour éviter ce problème.
Cela signifie:

- 666\. ha.

(comme indiqué explicitement dans la réponse de ForNeVeR )

C'est pourquoi ce 666nombre est changé en chiffres romains dans une READMEdémarque GitHub .


Mike Lippert a commenté:

le premier élément de cette liste, il doit donc apparaître comme inon dclxvi.
Les listes ordonnées Markdown ignorent le nombre réel utilisé et le numéro séquentiellement, et je n'ai pas vu de moyen de changer cela.

Cependant, non: cela s'affiche dclxvi, car le code html généré <ol start="666">est conforme aux spécifications GFM :

Si l'élément de liste est commandé, un numéro de début lui est également attribué, en fonction du marqueur de liste ordonné "

(ici, ' 666' est le marqueur de liste ordonné)

Mike ajoute:

@VonC Pour quelqu'un d'autre, voici un autre extrait utile du lien doc de VonC:

"Le numéro de début d'une liste ordonnée est déterminé par le numéro de liste de son élément de liste initial. Le nombre d'éléments de liste suivants n'est pas pris en compte."


Aussi, pourquoi l'espacement est-il gâché? Je n'ai pas compris ça dans ta réponse

Vous obtenez une liste ordonnée <ol>dans un élément de liste non ordonné <li>:

<ul>
  <li>
    <ol start="666">
      <li>ha.</li>
    </ol>
  </li>
</ul>

Les règles CSS de GitHub incluent:

.markdown-body ol {
    padding-left: 2em;
}

Si vous mettez 3em, vous obtiendrez au lieu de
rembourrage correct

mauvais rembourrage

VonC
la source
10
@MDXF Je soupçonne que le nombre suivi d'un point est transformé en une liste ordonnée sur la même ligne qu'un élément de liste non ordonné (le «-»). Normalement, <li> et <ol> ne sont pas censés être rendus sur la même ligne ...
VonC
@MDXF J'ai édité la réponse avec la règle CSS exacte qui provoque un espacement incorrect.
VonC
2
En fait, je pense que la sortie est soit une amélioration de démarque dont je n'ai pas entendu parler, soit un bug. Oui - .666 est une sous-liste ordonnée, CEPENDANT, c'est le 1er élément de cette liste, il devrait donc apparaître comme je ne suis pas dclxvi . Les listes ordonnées Markdown ignorent le nombre réel utilisé et le numéro séquentiellement, et je n'ai pas vu de moyen de changer cela.
Mike Lippert
2
@MikeLippert non, il s'affiche sur dclxvi, car le code HTML généré <ol start="666">est conforme à github.github.com/gfm/#list-items : "Si l'élément de liste est commandé, un numéro de début lui est également attribué, basé sur le marqueur de liste ordonné "(ici, '666' est le marqueur de liste ordonné)
VonC
2
@VonC Merci, je ne connaissais pas cette amélioration pour le démarque à la saveur github, et je ne l'ai pas trouvée avec une recherche rapide sur Google avant de commenter. Pour quelqu'un d'autre, voici un autre extrait utile du lien doc de VonC "Le numéro de début d'une liste ordonnée est déterminé par le numéro de liste de son élément de liste initial. Le nombre d'éléments de liste suivants n'est pas pris en compte."
Mike Lippert
376

L'ajout d'un point après en 666fait un marqueur de liste ordonné .

GitHub déclare CSS qui rend les marqueurs de liste ordonnés en utilisant des chiffres romains:

ol ol,ul ol {
    list-style-type: lower-roman
}

Échappez à la période avec une barre oblique inverse et vous devriez voir la sortie correcte.

Tommi Kaikkonen
la source
84

Bien que d'autres réponses expliquent bien pourquoi vous avez le problème, elles ne vous ont pas donné d'exemple exact de la façon de résoudre ce problème .

Et il semble que vous l'ayez déjà résolu de manière imparfaite , en remplaçant votre texte par

- `666`. ha.

Il existe une astuce courante pour échapper le point après le nombre pour le faire ressembler à un texte normal (et non à une étiquette de liste ordonnée):

- 666\. ha. (this will render as you probably want)
ForNeVeR
la source