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

DCLXVI666的罗马数字。

这真让我毛骨悚然。我的本地文件和 原始文件都显示 666

GitHub 在做什么? 为什么未编号列表中的缩进被搞乱了?这是复活节彩蛋,还是什么邪恶的虫子?

85528 次浏览

这似乎后面跟着github/标记问题991,在有序子列表中,十进制数字自动变成罗马数字。

我找到了问题的原因。它是CSS

这是嵌套有序列表以超文本标记语言呈现的预期方式。

这在超文本标记语言中是不期望的。

我们不会对默认的超文本标记语言行为进行任何修改。

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

我不懂CSS,但我的理解是这是问题的原因。我可以通过禁用CSS来获得预期的结果。(我来自我的手机,所以我不能使用浏览器检查器)

如“GitHub风格Markdown的正式规范”中所述,GitHub Markdown规范GFM:GitHub风格的Markdown规范构建在通用标记规范(如有):之上。

正如他的回答中提到的汤米·凯科宁,有序列表是因为666后面的点。见GFM规范部分5.2

第6.1节中所述,任何ASCII标点符号都可以反斜杠转义,以避免此问题。
这意味着:

- 666\. ha.

(如ForNeVeR回答所示)

这就是为什么在GitHubREADME标记中666数字更改为罗马数字的原因。


Mike Lippert评论:

该列表中的第一个元素,因此它应该显示为i而不是dclxvi
Markdown有序列表忽略了实际使用的数字和顺序编号,我还没有看到改变它的方法。

但是,没有:它显示dclxvi,因为生成的html代码是<ol start="666">,这与GFM规格一致:

如果列表项是有序的,那么它也被分配了一个起始号,基于有序列表标记”

(这里,'666'是有序列表标记)

迈克补充说:

@VonC对于其他人来说,这里是VonC的doc链接的另一个有用的摘录:

"排序列表的起始编号由其初始列表项的列表编号决定。后续列表项的编号被忽略。"


还有,为什么行间距是乱七八糟的?我在你的回答中没有注意到

你在一个未排序的列表项目<li>中得到一个有序列表<ol>

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

GitHub CSS规则包括:

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

如果你输入3em,你会得到
正确的填充
而不是
错误的填充

666之后添加句点使其成为有序列表标记

GitHub声明了使用罗马数字呈现有序列表标记的CSS:

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

用反斜杠转义句点,您应该会看到正确的输出。

虽然其他答案擅长解释为什么你有问题,但他们没有给你一个如何修复的确切例子。

似乎你已经解决了它以不完美的方式,将文本替换为

- `666`. ha.

有一个常见的技巧来转义数字后的点,使其看起来像一个正常的文本(而不是有序列表标签):

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