GitHub сатанически возится с Markdown - изменяет 666 на DCLXVI

Мой репозиторий GitHub содержит только чтение. В этом 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, и почему отступы в списке пронумерованных списков перепутаны? Это пасхальное яйцо или сатанинская ошибка?

Ответ 1

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

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

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

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

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

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

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

Как упоминалось в " Формальная спецификация для GitHub Flavored Markdown", GitHub markdown spec GFM: GitHub Flavored Markdown Spec построен поверх CommonMark Spec.

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

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

- 666\. ha.

(как явно показано в ForNeVeR ответить)

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


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

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

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

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

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

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

@VonC Для кого-то еще здесь есть еще одна полезная выдержка из ссылки VonC doc:

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


Также, почему пробел перепутался? Я не понял этого в вашем ответе

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

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

В правила CSS GitHub входят:

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

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

Ответ 2

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

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

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

Сбросьте период с обратным слэшем, и вы должны увидеть правильный вывод.

Ответ 3

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

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

- `666`. ha.

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

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