GitHub сатанински балуется с Markdown - меняет 666 на DCLXVI

729

В моем репозитории GitHub есть только readme. В этом readme локально я написал это:

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.

Акцент на последней строке. То, что GitHub решил показать, не было 666 .

dclxvi

DCLXVIэто число римской цифры для 666 .

Это действительно пугало меня. Мой локальный файл и необработанный файл оба показывают 666.

Что делает GitHub, и почему отступы в ненумерованном списке испорчены? Это пасхальное яйцо или какой-то сатанинский жук?

MD XF
источник
15
Вы пробовали - 5. whateverэто должно превратиться в, ·V whateverесли я вижу это правильно
Ханс Кох
8
Только что проверил себя и все числа преобразовали в римские цифры: github.com/NoahCristino/Forked/tree/…
Ноа Кристино
27
@immibis использование дефисов для маркеров - это стандартная уценка, не так ли?
ESR
16
@EdmundReed Разве обозначение вложенного списка не является стандартной уценкой?
user253751
4
Не беспокойтесь и о действительном латинском числе. Это число, вероятно, вовсе не означает, что такое общее понимание из-за ошибки перевода.

Ответы:

474

Похоже, что за этим следует выпуск 991 github / markup , где в упорядоченном подсписке десятичные цифры автоматически превращаются в римские.

Я нашел причину проблемы. Это CSS

Это ожидаемый способ отображения вложенных упорядоченных списков в HTML.

Это не ожидается в HTML. https://jsfiddle.net/tf5jtv8s

Мы не вносим никаких изменений в поведение HTML по умолчанию.

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

Я не знаю CSS, но я понимаю, что это является причиной проблемы. Я могу получить ожидаемый результат, отключив CSS. (Я со своего мобильного телефона, поэтому я не могу использовать инспектор браузера)

Как упомянуто в « Формальной спецификации для GitHub Flavored Markdown », спецификация GitHub Gdown для GFM: GitHub Flavored Markdown основана на спецификации CommonMark .

И как Томми Кайкконен упомянул в своем ответе , упорядоченный список из-за точки, следующей за 666. См. Раздел GFM Spec 5.2 .

Как упомянуто в разделе 6.1 , любой знак препинания ASCII может быть экранирован обратной косой чертой, чтобы избежать этой проблемы.
Это значит:

- 666\. ha.

(как явно показано в ForNeVeR «s ответ )

Вот почему это 666число изменяется на римские цифры в READMEуценке GitHub .


Майк Липперт прокомментировал:

1-й элемент в этом списке, поэтому он должен отображаться как iнет dclxvi.
Упорядоченные списки уценки игнорируют фактическое используемое число и номер последовательно, и я не видел способа изменить это.

Тем не менее, нет: он показывает dclxvi, потому что сгенерированный HTML-код <ol start="666">, который соответствует спецификации GFM :

Если элемент списка упорядочен, то ему также присваивается начальный номер на основе маркера упорядоченного списка ».

(здесь ' 666' - маркер упорядоченного списка)

Майк добавляет:

@VonC Для всех остальных вот еще одна полезная выдержка из ссылки на документацию VonC:

«Начальный номер упорядоченного списка определяется номером списка его первоначального элемента списка. Номера последующих элементов списка не учитываются».


Кроме того, почему интервал испорчен? Я не уловил это в вашем ответе

Вы получаете упорядоченный список <ol>в неупорядоченном элементе списка <li>:

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

Правила CSS GitHub включают в себя:

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

Если вы положите 3em, вы получите вместо
правильное заполнение

неправильное заполнение

VonC
источник
10
@MDXF Я подозреваю, что число, за которым следует точка, преобразуется в упорядоченный список в той же строке, что и неупорядоченный элемент списка ('-'). Обычно <li> и <ol> не должны отображаться в одной строке ...
VonC
@MDXF Я отредактировал ответ с точным правилом CSS, которое вызывает неправильный интервал.
VonC
2
На самом деле я думаю, что вывод - это либо улучшение уценки, о котором я не слышал, либо ошибка. Да - .666 - это упорядоченный подсписок, ОДНАКО, это 1-й элемент в этом списке, поэтому он должен отображаться, поскольку я не dclxvi . Упорядоченные списки уценки игнорируют фактическое используемое число и номер последовательно, и я не видел способа изменить это.
Майк Липперт
2
@MikeLippert нет, он отображается в dclxvi, потому что сгенерированный html-код <ol start="666">соответствует github.github.com/gfm/#list-items : «Если элемент списка упорядочен, то ему также назначается начальный номер, на основе маркера упорядоченного списка "(здесь маркер упорядоченного списка '666')
VonC
2
@VonC Спасибо, я не знал об этом улучшении для gitHub-уценки и не нашел его с быстрым поиском в Google, пока не прокомментировал. Для кого-то еще есть еще одна полезная выдержка из ссылки на документацию VonC: «Начальный номер упорядоченного списка определяется номером списка его первоначального элемента списка. Номера последующих элементов списка не учитываются».
Майк Липперт
376

Добавление периода после 666делает его упорядоченным маркером списка .

GitHub объявляет CSS, который отображает упорядоченные маркеры списка, используя римские цифры:

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

Избегайте точки с обратной косой чертой, и вы должны увидеть правильный вывод.

Томми Кайкконен
источник
84

В то время как другие ответы хорошо объясняют, почему у вас есть проблема, они не дали вам точного примера того, как это исправить .

И кажется, что вы уже решили это несовершенным образом , заменив текст

- `666`. ha.

Есть обычная хитрость, позволяющая избежать точки после числа, чтобы она выглядела как обычный текст (а не как упорядоченная метка списка):

- 666\. ha. (this will render as you probably want)
Никогда
источник