GitHub spielt satanisch mit Markdown - ändert 666 in DCLXVI

729

Mein GitHub-Repository enthält nur eine Readme-Datei. In dieser Readme-Datei habe ich vor Ort Folgendes geschrieben:

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.

Schwerpunkt auf der letzten Zeile. Was GitHub zeigen wollte, war nicht 666 .

dclxvi

DCLXVIist die römische Ziffernzahl für 666 .

Das hat mich wirklich erschreckt. Meine lokale Datei und die Rohdatei werden beide angezeigt 666.

Was macht GitHub und warum ist der Einzug in der nicht nummerierten Liste durcheinander? Ist das ein Osterei oder ein satanischer Käfer?

MD XF
quelle
15
Haben Sie versucht, - 5. whateveres sollte sich verwandeln, ·V whateverwenn ich es richtig sehe
Hans Koch
8
Habe mich gerade getestet und alle Zahlen werden in römische Zahlen umgewandelt: github.com/NoahCristino/Forked/tree/…
Noah Cristino
27
@immibis die Verwendung von Bindestrichen für Aufzählungszeichen ist Standardabschlag, nicht wahr?
ESR
16
@EdmundReed Ist die verschachtelte Listennotation nicht auch Standard-Markdown?
user253751
4
Mach dir auch keine Sorgen um die tatsächliche lateinische Zahl. Diese Zahl bedeutet wahrscheinlich überhaupt nicht, was das allgemeine Verständnis aufgrund eines Übersetzungsfehlers ist.

Antworten:

474

Darauf scheint das Github / Markup-Problem 991 zu folgen , bei dem in der geordneten Unterliste Dezimalzahlen automatisch in römische Ziffern umgewandelt werden.

Ich habe die Ursache des Problems gefunden. Es ist CSS

Dies ist die erwartete Möglichkeit, verschachtelte geordnete Listen in HTML zu rendern.

Dies wird in HTML nicht erwartet. https://jsfiddle.net/tf5jtv8s

Wir nehmen keine Änderungen am Standard-HTML-Verhalten vor.

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

Ich kenne CSS nicht, aber ich verstehe, dass dies die Ursache des Problems ist. Ich kann das erwartete Ergebnis erzielen, indem ich CSS deaktiviere. (Ich komme von meinem Handy, daher kann ich den Browser-Inspektor nicht verwenden.)

Wie unter " Eine formale Spezifikation für GitHub Flavored Markdown " erwähnt, basiert die GitHub Markdown-Spezifikation GFM: GitHub Flavored Markdown Spec auf der CommonMark Spec .

Und wie Tommi Kaikkonen in seiner Antwort erwähnte , ist die geordnete Liste auf den Punkt nach 666 zurückzuführen. Siehe Abschnitt 5.2 der GFM-Spezifikation .

Wie in Abschnitt 6.1 erwähnt , kann jedes ASCII-Interpunktionszeichen mit einem Backslash versehen werden, um dieses Problem zu vermeiden.
Das bedeutet:

- 666\. ha.

(wie in der Antwort von ForNeVeR ausdrücklich gezeigt )

Aus diesem Grund wird diese 666Nummer in einem GitHub- READMEMarkdown in römische Ziffern geändert .


Mike Lippert kommentierte:

das erste Element in dieser Liste, daher sollte es als inicht angezeigt werden dclxvi.
Markdown-geordnete Listen ignorieren die tatsächlich verwendete Nummer und die Nummer nacheinander, und ich habe keine Möglichkeit gesehen, dies zu ändern.

Nein, es wird angezeigt dclxvi, da der generierte HTML-Code <ol start="666">mit den GFM-Spezifikationen übereinstimmt :

Wenn das Listenelement bestellt wird, wird ihm auch eine Startnummer zugewiesen, die auf der geordneten Listenmarkierung basiert. "

(hier ist ' 666' die geordnete Listenmarkierung)

Mike fügt hinzu:

@VonC Für alle anderen hier ein weiterer nützlicher Auszug aus VonCs Dokument-Link:

"Die Startnummer einer geordneten Liste wird durch die Listennummer ihres ursprünglichen Listenelements bestimmt. Die Nummern nachfolgender Listenelemente werden nicht berücksichtigt."


Warum ist der Abstand durcheinander? Das habe ich in Ihrer Antwort nicht verstanden

Sie erhalten eine geordnete Liste <ol>innerhalb einer ungeordneten Liste Artikel <li> :

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

Zu den GitHub-CSS-Regeln gehören:

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

Wenn Sie setzen 3em, würden Sie statt bekommen
richtige Polsterung

falsche Polsterung

VonC
quelle
10
@MDXF Ich vermute, dass die Zahl, auf die ein Punkt folgt, in eine geordnete Liste in derselben Zeile wie ein ungeordnetes Listenelement (das '-') umgewandelt wird. Normalerweise sollten <li> und <ol> nicht in derselben Zeile gerendert werden ...
VonC
@MDXF Ich habe die Antwort mit der genauen CSS-Regel bearbeitet, die den falschen Abstand verursacht.
VonC
2
Eigentlich denke ich, dass die Ausgabe entweder eine Markdown-Verbesserung ist, von der ich noch nichts gehört habe, oder ein Fehler. Ja - .666 ist eine geordnete Unterliste, JEDOCH ist es das erste Element in dieser Liste, daher sollte es angezeigt werden, da ich nicht dclxvi bin . Markdown-geordnete Listen ignorieren die tatsächlich verwendete Nummer und die Nummer nacheinander, und ich habe keine Möglichkeit gesehen, dies zu ändern.
Mike Lippert
2
@MikeLippert nein, es wird bei dclxvi angezeigt, da der generierte HTML-Code <ol start="666">mit github.github.com/gfm/#list-items übereinstimmt : "Wenn das Listenelement bestellt wird, wird ihm auch eine Startnummer zugewiesen. basierend auf dem geordneten Listenmarker "(hier ist '666' der geordnete Listenmarker)
VonC
2
@VonC Danke, ich hatte diese Verbesserung für Markdown mit Github-Geschmack nicht gekannt und fand sie nicht mit schnellem Googeln, bevor ich sie kommentierte. Für alle anderen ist hier ein weiterer nützlicher Auszug aus VonCs Dokumentlink "Die Startnummer einer geordneten Liste wird durch die Listennummer ihres ursprünglichen Listenelements bestimmt. Die Nummern nachfolgender Listenelemente werden nicht berücksichtigt."
Mike Lippert
376

Durch Hinzufügen eines Punkts danach 666wird es zu einer geordneten Listenmarkierung .

GitHub deklariert CSS, das geordnete Listenmarkierungen mit römischen Ziffern rendert:

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

Verlassen Sie den Punkt mit einem Backslash, und Sie sollten die richtige Ausgabe sehen.

Tommi Kaikkonen
quelle
84

Während andere Antworten gut erklären können, warum Sie das Problem haben, haben sie Ihnen kein genaues Beispiel gegeben, wie Sie das beheben können .

Und es scheint, dass Sie es bereits unvollkommen gelöst haben und Ihren Text durch ersetzt haben

- `666`. ha.

Es gibt einen gängigen Trick, um den Punkt nach der Zahl zu maskieren, damit er wie ein normaler Text aussieht (und nicht wie eine geordnete Listenbezeichnung):

- 666\. ha. (this will render as you probably want)
Niemals
quelle