GitHub jugando satánicamente con Markdown-cambia 666 a DCLXVI


Mi repositorio de GitHub no tiene nada más que un readme. En este readme, 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 fue no 666.

dclxvi

DCLXVI es el número romano para 666.

Esto realmente me asustó. Mi archivo local y el archivo raw ambos muestran 666.

¿Qué está haciendo GitHub, y por qué la sangría en la lista no numerada está desordenada? Ser ¿es un huevo de pascua o un bicho satánico?

Author: MD XF, 2017-06-18

3 answers

Esto parece ser seguido por github/markup issue 991, donde en la sub-lista 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 representen en HTML.

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

No hacemos ninguna modificación al valor predeterminado Comportamiento HTML.

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. (Estoy desde mi móvil, así que no puedo usar el inspector del navegador)

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

Y como Tommi Kaikkonen mencionado en su respuesta, la lista ordenada se debe al punto que sigue al 666. Véase La sección 5.2 de la especificación GFM.

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

- 666\. ha.

(como se muestra explícitamente en ForNeVeR's respuesta)

Es por eso que ese 666 número se cambia a números romanos en un GitHub README markdown.


Mike Lippert comentado:

El 1er elemento en esa lista por lo que debe mostrar como i 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.

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

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

(aquí, '666' es el marcador de lista ordenado)

Mike añade:

@VonC Para cualquier otra persona aquí hay otro extracto útil del enlace del documento 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. No se tienen en cuenta los números de los siguientes elementos de la lista."


También, ¿por qué el espaciado está desordenado? No me di cuenta de que en su respuesta

Se obtiene una lista ordenada <ol> dentro de una lista no ordenada <li>:

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

Las reglas CSS de GitHub incluyen:

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

Si pones 3em, se obtiene
relleno correcto
en lugar de
relleno incorrecto

 386
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-24 00:06:06

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

GitHub declara CSS que renderiza marcadores de lista ordenados usando números romanos:

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

Escape el punto con una barra invertida, y debería ver la salida correcta.

 357
Author: Tommi Kaikkonen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-18 20:34:41

Mientras que otras respuestas son buenas explicando por qué tienes el problema, no te han dado un ejemplo exacto de cómo arreglar eso.

Y parece que ya lo has resuelto de una manera imperfecta, reemplazando tu 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)
 68
Author: ForNeVeR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-19 13:16:49