GitHub scherza satanicamente con Markdown - cambia 666 in DCLXVI


729

Il mio repository GitHub non contiene altro che un file Leggimi. In questo readme, localmente ho scritto questo:

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.

Enfasi sull'ultima riga. Ciò che GitHub ha deciso di mostrare non lo era 666.

DCLXVI

DCLXVIè il numero romano per 666 .

Questo mi ha davvero spaventato. Il mio file locale e il file raw mostrano entrambi 666.

Cosa sta facendo GitHub e perché il rientro nell'elenco non numerato è incasinato? È un uovo di Pasqua o un insetto satanico?


15
Hai provato - 5. whateverche dovrebbe trasformarsi in ·V whateverse lo vedo correttamente
Hans Koch,

8
Mi sono appena messo alla prova e tutti i numeri si convertono in numeri romani: github.com/NoahCristino/Forked/tree/…
Noah Cristino,

27
@immibis utilizzando trattini per proiettili è un markdown standard, vero?
ESR,

16
@EdmundReed La notazione dell'elenco nidificato non è anche markdown standard?
user253751

4
Non preoccuparti nemmeno del numero latino attuale. Quel numero probabilmente non significa affatto quale sia l'intesa comune a causa di un errore di traduzione.

Risposte:


474

Questo sembra essere seguito dal numero 991 di github / markup , dove sull'elenco secondario ordinato i numeri decimali si trasformano automaticamente in numeri romani.

Ho trovato la causa del problema. È CSS

Questo è il modo previsto per il rendering in HTML degli elenchi ordinati nidificati.

Questo non è previsto in HTML. https://jsfiddle.net/tf5jtv8s

Non apportiamo modifiche al comportamento HTML predefinito.

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

Non conosco i CSS ma la mia comprensione è che questa è la causa del problema. Posso ottenere il risultato atteso disabilitando CSS. (Vengo dal mio cellulare, quindi non posso usare Inspector browser)

Come menzionato in " Una specifica formale per GitHub Flavored Markdown ", la specifica di markdown GitHub GFM: GitHub Flavored Markdown Spec è costruita sulla parte superiore della CommonMark Spec .

E come Tommi Kaikkonen ha menzionato nella sua risposta , l'elenco ordinato è a causa del punto che segue 666. Vedi la sezione 5.2 delle Specifiche GFM .

Come menzionato nella sezione 6.1 , qualsiasi carattere di punteggiatura ASCII può essere sottoposto a backslash per evitare questo problema.
Questo significa:

- 666\. ha.

(come esplicitamente indicato nella Fornever 's risposta )

Ecco perché quel 666numero viene cambiato in numeri romani in un READMEmarkdown GitHub .


Mike Lippert ha commentato:

il primo elemento in quell'elenco, quindi dovrebbe essere mostrato come ino dclxvi.
Gli elenchi ordinati di Markdown ignorano il numero effettivo utilizzato e il numero in sequenza, e non ho visto un modo per cambiarlo.

Tuttavia, no: mostra dclxvi, perché il codice html generato è <ol start="666">, che è coerente con le specifiche GFM :

Se la voce dell'elenco viene ordinata, viene assegnato anche un numero iniziale, in base all'indicatore della lista ordinata "

(qui, ' 666' è l'indicatore dell'elenco ordinato)

Mike aggiunge:

@VonC Per chiunque altro ecco un altro estratto utile dal collegamento doc di VonC:

"Il numero iniziale di un elenco ordinato è determinato dal numero di elenco dell'elemento dell'elenco iniziale. I numeri degli elementi dell'elenco successivi vengono ignorati."


Inoltre, perché la spaziatura è incasinata? Non l'ho preso nella tua risposta

Si ottiene un elenco ordinato <ol>all'interno di un elemento dell'elenco non ordinato <li>:

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

Le regole CSS di GitHub includono:

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

Se lo metti 3em, otterrai invece di
imbottitura corretta

imbottitura sbagliata


10
@MDXF Sospetto perché il numero seguito da un punto viene trasformato in un elenco ordinato sulla stessa riga di un elemento di elenco non ordinato (il '-'). Normalmente, <li> e <ol> non dovrebbero essere riprodotti sulla stessa linea ...
VonC

@MDXF Ho modificato la risposta con la regola CSS esatta che causa la spaziatura errata.
VonC

2
In realtà penso che l'output sia un miglioramento markdown di cui non ho sentito parlare, né un bug. Sì - 0,666 è una sottolista ordinata, tuttavia, è il primo elemento in tale elenco e quindi dovrebbe mostrare come i non DCLXVI . Gli elenchi ordinati di Markdown ignorano il numero effettivo utilizzato e il numero in sequenza, e non ho visto un modo per cambiarlo.
Mike Lippert,

2
@MikeLippert no, viene mostrato in dclxvi, perché il codice html generato è <ol start="666">, che è coerente con github.github.com/gfm/#list-items : "Se la voce dell'elenco viene ordinata, viene assegnato anche un numero iniziale, basato sull'indicatore dell'elenco ordinato "(qui," 666 "è l'indicatore dell'elenco ordinato)
VonC

2
@VonC Grazie, non avevo conosciuto quel miglioramento per il markdown al gusto di github, e non l'ho trovato con google veloce prima di commentare. Per chiunque altro ecco un altro utile estratto dal collegamento doc di VonC "Il numero iniziale di un elenco ordinato è determinato dal numero di elenco della sua voce di elenco iniziale. I numeri delle voci di lista successive vengono ignorati."
Mike Lippert,

376

L'aggiunta di un punto dopo lo 666rende un indicatore di elenco ordinato .

GitHub dichiara CSS che esegue il rendering dei marcatori di elenco ordinati usando numeri romani:

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

Esci dal periodo con una barra rovesciata e dovresti vedere l'output corretto.


84

Mentre altre risposte sono brave a spiegare perché hai il problema, non ti hanno dato un esempio esatto di come risolverlo .

E sembra che tu l'abbia già risolto in modo imperfetto , sostituendo il tuo testo con

- `666`. ha.

C'è un trucco comune per sfuggire al punto dopo il numero per farlo sembrare un normale testo (e non un'etichetta dell'elenco ordinato):

- 666\. ha. (this will render as you probably want)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.