降价链接到标题

use*_*005 4 markdown hyperlink gitlab

我正在使用GitLab编写一个read.me文件。

我试图创建指向标题的链接。根据Wiki,应该自动创建一个ID:

看这里

我使用以下方法创建了标题:

### 1. This is my Header
Run Code Online (Sandbox Code Playgroud)

并尝试创建指向它的链接:

[link](#1--this-is-my-header)
Run Code Online (Sandbox Code Playgroud)

但它不起作用。我究竟做错了什么?

Way*_*lan 8

在文档中,您链接到我们了解到...

这些ID是根据以下规则从标头的内容生成的:

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

请注意规则4:“ 将连续的两个或多个连字符转换为一个。 ”但是,您尝试的示例连续有两个连字符(在后面1)。删除其中之一,您应该拥有它。

[link](#1-this-is-my-header)
Run Code Online (Sandbox Code Playgroud)

有时我会遇到一个唯一的标头,它以某种非显而易见的方式转换为ID。确定ID的快速方法是使用浏览器view source和/或inspect工具查看HTML源代码。例如,对于您的示例,您可能会找到以下HTML:

<h3 id="1-this-is-my-header">1. This is my Header</h3>
Run Code Online (Sandbox Code Playgroud)

然后,只需使用id带有哈希值的属性内容即可链接到该标头:#1-this-is-my-header

  • 非常感谢您的回答,+1。那么如果我们更改(改写)标题,引用就会丢失吗?如果是的话,这个功能几乎毫无价值(至少对我来说)。2022年,有办法解决这个问题吗? (2认同)
  • @Binarus,这取决于您正在使用的实现。此问题和答案特定于 Gitlab。某些实现允许您定义所使用的“slug”。其他人则不然。不幸的是,由于这是 Markdown 行为的扩展,没有在任何规范中定义,因此实现之间不存在一致性。即使那些允许您定义 slug 的方法在如何定义方面也不一致。当然,您始终可以使用原始 HTML,这样您就可以完全控制。 (2认同)