GitHub mexendo satanicamente com o Markdown - muda 666 para DCLXVI

729

Meu repositório GitHub não possui nada além de um leia-me. Neste leia-me, localmente, escrevi isso:

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.

Ênfase na última linha. O que o GitHub decidiu mostrar não era 666.

dclxvi

DCLXVIé o número do algarismo romano de 666 .

Isso realmente me assustou. Meu arquivo local e o arquivo bruto são exibidos 666.

O que o GitHub está fazendo e por que a indentação na lista não numerada está confusa? Este é um ovo de páscoa ou algum bug satânico?

MD XF
fonte
15
Você tentou - 5. whateverdeve transformar-se em ·V whateverse eu vê-lo corretamente
Hans Koch
8
Apenas testado mim e todos os números de converter em algarismos romanos: github.com/NoahCristino/Forked/tree/...
Noah Cristino
27
@immibis usando hífens para balas é remarcação padrão, não é?
ESR
16
@EdmundReed A notação de lista aninhada também não é remarcação padrão?
user253751
4
Também não se preocupe com o número latino real. Esse número provavelmente não significa em absoluto qual é o entendimento comum devido a um erro de tradução.

Respostas:

474

Isso parece ser seguido pela edição 991 do github / markup , onde, na sub-lista ordenada, os números decimais se transformam automaticamente em números romanos.

Eu encontrei a causa do problema. É CSS

Essa é a maneira esperada para que listas ordenadas aninhadas sejam renderizadas em HTML.

Isso não é esperado em HTML. https://jsfiddle.net/tf5jtv8s

Não fazemos nenhuma modificação no comportamento HTML padrão.

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

Eu não sei CSS, mas meu entendimento é que essa é a causa do problema. Posso obter o resultado esperado desativando o CSS. Como sou do meu celular, não posso usar o inspetor do navegador

Conforme mencionado em " Uma especificação formal para o GitHub Flavored Markdown ", o GitMub : GFM: GitHub Flavored Markdown Spec é construído sobre o CommonMark Spec .

E como Tommi Kaikkonen mencionou em sua resposta , a lista ordenada é devido ao ponto 666. Consulte a seção 5.2 GFM Spec .

Conforme mencionado na seção 6.1 , qualquer caractere de pontuação ASCII pode ter uma barra invertida, para evitar esse problema.
Que significa:

- 666\. ha.

(como explicitamente mostrada na Fornever de resposta )

É por isso que esse 666número é alterado para números romanos em uma READMEmarcação do GitHub .


Mike Lippert comentou:

o primeiro elemento nessa lista, para que ele apareça como inão dclxvi.
As listas ordenadas de remarcação ignoram o número real usado e o número sequencialmente, e eu não vi uma maneira de mudar isso.

No entanto, não: mostra dclxvi, porque o código html gerado <ol start="666">é consistente com as especificações da GFM :

Se o item da lista for solicitado, também será atribuído um número inicial, com base no marcador da lista ordenada "

(aqui, ' 666' é o marcador da lista ordenada)

Mike acrescenta:

@VonC Para mais alguém, aqui está outro trecho útil do link de documentos do VonC:

"O número inicial de uma lista ordenada é determinado pelo número da lista do seu item inicial da lista. Os números dos itens subsequentes da lista são desconsiderados."


Além disso, por que o espaçamento está bagunçado? Eu não entendi isso na sua resposta

Você obtém uma lista ordenada <ol>em um item de lista não ordenada <li>:

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

As regras CSS do GitHub incluem:

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

Se você colocar 3em, você obteria em vez de
preenchimento correto

preenchimento errado

VonC
fonte
10
@MDXF Suspeito porque o número seguido de um ponto é transformado em uma lista ordenada na mesma linha que um item de lista não ordenado (o '-'). Normalmente, <li> e <ol> não devem ser processados na mesma linha ...
VonC
@MDXF Eu editei a resposta com a regra CSS exata que causa o espaçamento incorreto.
VonC
2
Na verdade, acho que a saída é um aprimoramento de redução que eu nunca ouvi falar ou um bug. Sim - .666 é uma sub -lista ordenada, NO ENTANTO, é o primeiro elemento dessa lista, portanto deve ser exibida como eu não dclxvi . As listas ordenadas de remarcação ignoram o número real usado e o número sequencialmente, e eu não vi uma maneira de mudar isso.
precisa
2
@MikeLippert não, ele é exibido no dclxvi, porque o código html gerado <ol start="666">é consistente com github.github.com/gfm/#list-items : "Se o item da lista for encomendado, também será atribuído um número inicial, baseado no marcador da lista ordenada "(aqui, '666' é o marcador da lista ordenada)
VonC
2
@VonC Obrigado, eu não conhecia esse aprimoramento para descontos no github e não o achei com uma pesquisa rápida antes de comentar. Para qualquer outra pessoa, aqui está outro trecho útil do link doc do VonC "O número inicial de uma lista ordenada é determinado pelo número da lista do item inicial da lista. Os números dos itens subsequentes da lista são desconsiderados".
precisa
376

A adição de um ponto final o 666torna um marcador de lista ordenada .

O GitHub declara CSS que renderiza marcadores de lista ordenada usando algarismos romanos:

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

Escape o período com uma barra invertida e você verá a saída correta.

Tommi Kaikkonen
fonte
84

Embora outras respostas sejam boas para explicar por que você tem o problema, elas não deram um exemplo exato de como corrigir isso.

E parece que você já o resolveu de maneira imperfeita , substituindo seu texto por

- `666`. ha.

Existe um truque comum para escapar do ponto após o número para parecer um texto normal (e não um rótulo da lista ordenada):

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