GitHub se mete de forma satánica con Markdown: cambia 666 a DCLXVI

729

Mi repositorio de GitHub no tiene más que un archivo Léame. En este archivo Léame, localmente escribí esto:

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.

Énfasis en la última línea. Lo que GitHub decidió mostrar no fue 666.

dclxvi

DCLXVIes el número romano para 666 .

Esto realmente me asustó. Mi archivo local y el archivo sin procesar se muestran 666.

¿Qué está haciendo GitHub y por qué la sangría en la lista sin numerar está en mal estado? ¿Es este un huevo de pascua o algún insecto satánico?

MD XF
fuente
15
¿Intentaste - 5. whateverque se convirtiera ·V whateversi lo veo correctamente
Hans Koch
8
Acabo de probarme
Noah Cristino
27
@immibis usando guiones para viñetas es una rebaja estándar, ¿no?
ESR
16
@EdmundReed ¿La notación de la lista anidada no es también una rebaja estándar?
user253751
44
Tampoco se preocupe por el número latino real. Ese número probablemente no significa en absoluto cuál es el entendimiento común debido a un error de traducción.

Respuestas:

474

Esto parece ser seguido por el problema 991 de github / markup , donde en la sublista ordenada, los números decimales se convierten automáticamente en números romanos.

He encontrado la causa del problema. Es CSS

Esta es la forma esperada para que las listas ordenadas anidadas se procesen en HTML.

Esto no se espera en HTML. https://jsfiddle.net/tf5jtv8s

No hacemos ninguna modificación al comportamiento HTML predeterminado.

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

No conozco CSS, pero entiendo que esta es la causa del problema. Puedo obtener el resultado esperado deshabilitando CSS. (Soy de mi móvil, así que no puedo usar el inspector del navegador)

Como se menciona en " Una especificación formal para GitHub Flavored Markdown ", la especificación de reducción de GitHub GFM: GitHub Flavored Markdown Spec está construida sobre la especificación de CommonMark .

Y como Tommi Kaikkonen mencionó en su respuesta , la lista ordenada se debe al punto que sigue al 666. Consulte la sección 5.2 de las especificaciones de GFM .

Como se menciona en la sección 6.1 , cualquier carácter de puntuación ASCII puede ser una barra invertida, para evitar este problema.
Eso significa:

- 666\. ha.

(como se muestra explícitamente en la respuesta de ForNeVeR )

Es por eso que ese 666número se cambia a números romanos en una READMErebaja de GitHub .


Mike Lippert comentó:

el primer elemento de esa lista, por lo que debería aparecer como ino dclxvi.
Las listas ordenadas de Markdown ignoran el número real utilizado y el número secuencialmente, y no he visto una manera de cambiar eso.

Sin embargo, no: se muestra dclxvi, porque el código html generado <ol start="666">es coherente con las especificaciones de GFM :

Si se ordena el elemento de la lista, también se le asigna un número de inicio, basado en el marcador de la lista ordenada "

(aquí ' 666' es el marcador de la lista ordenada)

Mike agrega:

@VonC Para cualquier otra persona, aquí hay otro extracto útil del enlace de documentación de VonC:

"El número de inicio de una lista ordenada está determinado por el número de lista de su elemento de lista inicial. Los números de elementos de lista posteriores no se tienen en cuenta".


Además, ¿por qué está mal el espacio? No entendí eso en tu respuesta

Obtiene una lista ordenada <ol>dentro de un elemento de la lista no ordenada <li>:

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

Las reglas de CSS de GitHub incluyen:

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

Si pones 3em, obtendrás en lugar de
acolchado correcto

relleno incorrecto

VonC
fuente
10
@MDXF Sospecho porque el número seguido de un punto se transforma en una lista ordenada en la misma línea que un elemento de la lista no ordenada (el '-'). Normalmente, <li> y <ol> no deben representarse en la misma línea ...
VonC
@ MDXF He editado la respuesta con la regla CSS exacta que causa el espaciado incorrecto.
VonC
2
En realidad, creo que la salida es una mejora de reducción de la que no he oído hablar o un error. Sí - 0.666 es una sublista ordenada, sin embargo, es la primera en el elemento de la lista por lo que debe mostrar como yo no DCLXVI . Las listas ordenadas de Markdown ignoran el número real utilizado y el número secuencialmente, y no he visto una manera de cambiar eso.
Mike Lippert
2
@MikeLippert no, se muestra en dclxvi, porque el código html generado es <ol start="666">, que es coherente con github.github.com/gfm/#list-items : "Si se ordena el elemento de la lista, también se le asigna un número de inicio, basado en el marcador de la lista ordenada "(aquí, '666' es el marcador de la lista ordenada)
VonC
2
@VonC Gracias, no conocía esa mejora para la rebaja con sabor a github, y no la encontré con google rápido antes de comentar. Para cualquier otra persona, aquí hay otro extracto útil del enlace de documentación de VonC "El número de inicio de una lista ordenada está determinado por el número de lista de su elemento de lista inicial. Los números de elementos de lista posteriores no se tienen en cuenta".
Mike Lippert
376

Agregar un punto después lo 666convierte en un marcador de lista ordenado .

GitHub declara CSS que representa los marcadores de lista ordenados con números romanos:

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

Escape el período con una barra diagonal inversa, y debería ver la salida correcta.

Tommi Kaikkonen
fuente
84

Si bien otras respuestas son buenas para explicar por qué tiene el problema, no le han dado un ejemplo exacto de cómo solucionarlo .

Y parece que ya lo resolvió de manera imperfecta , reemplazando su texto con

- `666`. ha.

Hay un truco común para escapar del punto después del número para que parezca un texto normal (y no una etiqueta de lista ordenada):

- 666\. ha. (this will render as you probably want)
Para nunca
fuente