ChatGPT解决这个技术问题 Extra ChatGPT

GitHub 与 Markdown 搞混了 - 将 666 更改为 DCLXVI

My GitHub repository 中只有一个自述文件。在这个自述文件中,我在本地写了这个:

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

https://i.stack.imgur.com/AVSsT.png

DCLXVI666 的罗马数字。

这真的让我毛骨悚然。我的本地文件和 the raw file 都显示 666

GitHub 在做什么,为什么未编号列表上的缩进搞砸了?这是一个复活节彩蛋,还是一些撒旦的虫子?

你试过 - 5. whatever 如果我没看错它应该变成 ·V whatever
刚刚测试了自己,所有数字都转换为罗马数字:github.com/NoahCristino/Forked/tree/…
@immibis 使用连字符作为项目符号是标准降价,不是吗?
@EdmundReed 嵌套列表表示法不是标准降价吗?
也不必担心实际的拉丁数字。由于翻译错误,这个数字可能根本不代表普遍的理解。

C
Community

这似乎是 github/markup issue 991,在有序子列表中,十进制数字自动变成罗马数字。

我找到了问题的原因。它是 CSS 这是嵌套有序列表在 HTML 中呈现的预期方式。这在 HTML 中是不期望的。 https://jsfiddle.net/tf5jtv8s 我们不对默认的 HTML 行为进行任何修改。 ol ol,ul ol{list-style-type:lower-roman} 我不懂 CSS,但我的理解是这是问题的根源。我可以通过禁用 CSS 来获得预期的结果。 (我来自我的手机,所以我不能使用浏览器检查器)

如“A formal spec for GitHub Flavored Markdown”中所述,GitHub 降价规范 GFM: GitHub Flavored Markdown Spec 构建在 CommonMark Spec 之上。

正如 his answer 中提到的 Tommi Kaikkonen,有序列表是因为 666 后面的点。参见 GFM Spec section 5.2

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

- 666\. ha.

(如 ForNeVeRanswer 中明确显示的)

这就是为什么在 GitHub README 降价中将 666 数字更改为罗马数字的原因。

Mike Lippert 评论说:

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

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

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

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

迈克补充道:

@VonC 对于其他任何人,这里是 VonC 文档链接的另一个有用摘录:“有序列表的起始编号由其初始列表项的列表编号确定。后续列表项的编号被忽略。”

另外,为什么间距搞砸了?我没有在你的回答中发现这一点

您在无序列表 item <li> 中得到一个有序列表 <ol>

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

GitHub CSS 规则包括:

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

https://i.stack.imgur.com/zmUrx.png


@MDXF 我怀疑是因为后跟一个点的数字被转换为与无序列表项('-')在同一行的有序列表。通常,
    1. 不应该呈现在同一行...
  • @MDXF我已经使用导致错误间距的确切CSS规则编辑了答案。
    实际上我认为输出要么是我没有听说过的降价增强,要么是一个错误。是的 - .666 是一个有序的子列表,但是,它是该列表中的第一个元素,因此它应该显示为 i not dclxvi 。 Markdown 有序列表忽略了实际使用的数字和顺序的数字,我还没有看到改变它的方法。
    @MikeLippert 不,它显示在 dclxvi,因为生成的 html 代码是 <ol start="666">,这与 github.github.com/gfm/#list-items 一致:“如果列表项是有序的,那么它也被分配一个起始编号,基于有序列表标记"(这里,'666' 是有序列表标记)
    @VonC 谢谢,我不知道 github-flavored markdown 的增强功能,并且在我发表评论之前没有通过快速谷歌搜索找到它。对于其他任何人,这里是 VonC 文档链接的另一个有用摘录“有序列表的起始编号由其初始列表项的列表编号确定。后续列表项的编号被忽略。”
    T
    Tommi Kaikkonen

    666 之后添加句点使其成为 an ordered list marker

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

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

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


    F
    ForNeVeR

    尽管其他答案很好地解释了您遇到问题的原因,但他们并没有为您提供如何解决该问题的确切示例。

    而且您似乎已经解决了它in an imperfect manner,将您的文本替换为

    - `666`. ha.
    

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

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