一个markdown标题转成HTML锚点的规则是什么?

问题描述 投票:0回答:4

我需要生成一个长

README.md
文件和一些指向不同部分的链接,例如开头的目录。 Markdown 将章节标题翻译成链接:

这是 Markdown 中的标题和链接

为了生成目录的链接,我需要锚点的值。我有的文字。我需要规则的片段。大概是这样的:

[This is a heading and a link in Markdown](#thisisaheadingandalinkinmarkdown)

有谁知道如何将 markdown 中的标题转换为锚点/片段值的规则?

github hyperlink markdown anchor gitlab
4个回答
3
投票

GitLab 文档 说明了它如何从降价标头创建锚点:

  1. 所有文字转为小写
  2. 删除所有非单词文本(例如标点符号、HTML)
  3. 所有空格都转换为连字符
  4. 连续的两个或多个连字符转换为一个
  5. 如果已经生成了具有相同ID的header,一个唯一的 附加递增数字,从 1 开始。

这意味着

# Standard markdown
的锚点将转换为
standard-markdown

虽然我找不到任何明确的规则,但关于 GitHub 如何生成其锚点,似乎通过检查一些

README.md
上面的大多数规则也适用于 GitHub。


0
投票

将标题文本转换为锚定它不是标准的 Markdown 功能。原始规则没有提及它,参考实现也不提供该功能。因此,各种实现都创建了自己的一套规则,并且各不相同。 @Fairy 的回答概述了 Gitlab 使用的规则。

GitHub 发布了他们使用的规范,其中没有提到锚点。事实上,headers 部分显示的示例没有在标签上定义任何 id。据推测,这是因为他们将它们作为后处理器添加到他们的 markup 项目中。虽然没有公布的规则。您需要阅读源代码来制定规则。查看代码,规则似乎与 GitLab 相同,尽管可能存在一些细微差异,只有在仔细测试各种边缘情况后才会明显。


0
投票

我发现在 markdown header rules 中,从之前的注释中对这些进行了调整。
1.所有文字转为小写
2.所有非单词文本(例如标点符号、HTML)被删除但转换为连字符
3.所有空格都转换为连字符
4.连续两个或多个连字符转换为一个
5.如果已经生成了具有相同ID的header,则附加一个唯一的递增数字,从1开始。
所以,

SEND EMAIL TO DBA'S - is created like this: * [5. SEND EMAIL TO DBA'S]
(#5-send-email-to-dba-s).
希望这可以帮助任何人寻找。


-1
投票

是否可以强制他们使用我自己的 id 而不是自动生成功能? 任何旁路想法?

© www.soinside.com 2019 - 2024. All rights reserved.