GitHub satanistycznie zadziera z Markdown - zmienia 666 na DCLXVI

729

W moim repozytorium GitHub jest tylko plik Readme. W tym pliku Readme napisałem lokalnie:

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.

Nacisk na ostatnią linię. To, co GitHub postanowił pokazać, nie było 666.

dclxvi

DCLXVIjest liczbą rzymską na 666 .

To mnie naprawdę przeraziło. Mój plik lokalny i plik raw są wyświetlane 666.

Co robi GitHub i dlaczego zagłębienie się na liście nienumerowanej jest pomieszane? Czy to easter egg, czy jakiś satanistyczny pluskwa?

MD XF
źródło
15
Czy spróbowałeś - 5. whatever, powinno się to zmienić, ·V whateverjeśli dobrze to widzę
Hans Koch
8
Właśnie przetestowałem siebie i wszystkie liczby przekonwertowałem na cyfry rzymskie: github.com/NoahCristino/Forked/tree/…
Noah Cristino
27
@immibis używający łączników do pocisków to standardowe przeceny, prawda?
ESR
16
@EdmundReed Czy notacja listy zagnieżdżonej nie jest również standardowym znacznikiem?
user253751
4
Nie martw się też o rzeczywistą liczbę łacińską. Ta liczba prawdopodobnie wcale nie oznacza powszechnego zrozumienia z powodu błędu tłumaczenia.

Odpowiedzi:

474

Wydaje się, że po tym następuje numer github / markup 991 , w którym na uporządkowanej liście podrzędnej cyfry dziesiętne automatycznie zamieniają się w cyfry rzymskie.

Znalazłem przyczynę problemu. To jest CSS

Jest to oczekiwany sposób renderowania zagnieżdżonych list w HTML.

Nie jest to oczekiwane w HTML. https://jsfiddle.net/tf5jtv8s

Nie wprowadzamy żadnych zmian w domyślnym zachowaniu HTML.

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

Nie znam CSS, ale rozumiem, że to jest przyczyną problemu. Mogę uzyskać oczekiwany wynik, wyłączając CSS. (Jestem z telefonu komórkowego, więc nie mogę korzystać z inspektora przeglądarki)

Jak wspomniano w „ Formalnej specyfikacji dla GitHub Flavoured Markdown ”, GitHub dla markdown spec GFM: GitHub Flavored Markdown spec jest zbudowany na specyfikacji CommonMark .

I jak wspomniał Tommi Kaikkonen w swojej odpowiedzi , lista uporządkowana wynika z kropki po 666. Patrz sekcja 5.2 specyfikacji GFM .

Jak wspomniano w sekcji 6.1 , każdy znak interpunkcyjny ASCII może być poprzedzony ukośnikiem, aby uniknąć tego problemu.
To znaczy:

- 666\. ha.

(jak wyraźnie pokazano na ForNeVeR „s odpowiedź )

Dlatego ta 666liczba jest zmieniana na cyfry rzymskie w przecenie GitHub README.


Mike Lippert skomentował:

pierwszy element na tej liście, więc powinien być wyświetlany jako inie dclxvi.
Listy uporządkowane Markdown ignorują faktyczny numer i numer sekwencyjnie, a ja nie widziałem sposobu, aby to zmienić.

Jednak nie: pokazuje dclxvi, ponieważ wygenerowany kod HTML <ol start="666">jest zgodny ze specyfikacjami GFM :

Jeśli pozycja na liście jest zamówiona, wówczas przypisywany jest jej również numer początkowy na podstawie zamówionego znacznika listy „

(tutaj „ 666” oznacza znacznik listy uporządkowanej)

Mike dodaje:

@VonC Dla każdego innego oto kolejny przydatny fragment linku do dokumentu VonC:

„Początkowy numer uporządkowanej listy zależy od numeru początkowej pozycji na liście. Liczby kolejnych pozycji na liście są pomijane”.


Ponadto, dlaczego odstępy są pomieszane? Nie zrozumiałem tego w twojej odpowiedzi

Otrzymujesz uporządkowaną listę <ol>w obrębie niezamówionej pozycji na liście <li>:

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

Reguły GitHub CSS obejmują:

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

Jeśli umieścisz 3em, dostaniesz zamiast
prawidłowe wypełnienie

złe wypełnienie

VonC
źródło
10
@MDXF Podejrzewam, ponieważ liczba, po której następuje kropka, jest przekształcana w uporządkowaną listę w tym samym wierszu, co niezamówiona pozycja na liście („-”). Zwykle <li> i <ol> nie powinny być renderowane w tej samej linii ...
VonC
@MDXF Zedytowałem odpowiedź z dokładną regułą CSS, która powoduje nieprawidłowe odstępy.
VonC
2
Właściwie myślę, że wyjście to albo ulepszenie przeceny, o którym nie słyszałem, albo błąd. Tak - 0,666 jest uporządkowanym podlistę, jednak jest 1 element tej listy tak powinno pokazać jak ja nie dclxvi . Listy uporządkowane Markdown ignorują faktyczny numer i numer sekwencyjnie, a ja nie widziałem sposobu, aby to zmienić.
Mike Lippert
2
@MikeLippert nie, wyświetla się w dclxvi, ponieważ wygenerowany kod HTML <ol start="666">jest zgodny z github.github.com/gfm/#list-items : „Jeśli element listy jest zamówiony, wówczas jest mu również przypisywany numer początkowy, na podstawie markera listy uporządkowanej "(tutaj„ 666 ”jest markerem listy uporządkowanej)
VonC
2
@VonC Dzięki, nie znałem tego ulepszenia dla markdown o smaku github i nie znalazłem go w szybkim googlowaniu, zanim skomentowałem. Dla każdego innego jest inny przydatny fragment linku do dokumentu VonC „Numer początkowy uporządkowanej listy jest określony przez numer listy jej początkowego elementu listy. Liczby kolejnych elementów listy są pomijane”.
Mike Lippert
376

Dodanie kropki po 666powoduje, że jest to znacznik listy uporządkowanej .

GitHub deklaruje CSS, który renderuje uporządkowane znaczniki listy za pomocą cyfr rzymskich:

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

Ucieknij kropkę odwrotnym ukośnikiem i powinieneś zobaczyć poprawne wyjście.

Tommi Kaikkonen
źródło
84

Podczas gdy inne odpowiedzi dobrze wyjaśniają, dlaczego masz problem, nie podały dokładnego przykładu, jak to naprawić .

I wygląda na to, że rozwiązałeś go już niedoskonale , zastępując tekst

- `666`. ha.

Istnieje wspólna sztuczka polegająca na ucieczce przed kropką po numerze, aby wyglądała jak zwykły tekst (a nie uporządkowana etykieta listy):

- 666\. ha. (this will render as you probably want)
Nigdy
źródło