706

我曾多次提到 MultiMarkdown 对内部链接/命名锚点的支持,但我无法找到如何实际执行此操作的单个示例。

那么,表示命名锚的语法是什么,链接到它的语法与链接到任何其他 URL 的语法是什么(仅使用 #foo 而不是http://....)?

4

8 回答 8

763

<a name="abcd"></a>在标准 Markdown 中,在您要链接的位置放置一个锚点,并在同一页面上通过[link text](#abcd).

(这使用name=而不是id=,原因在这个答案中解释。)

远程引用[link text](http://...#abcd)当然可以使用。

只要您可以控制源文本和目标文本,这就像做梦一样。锚点甚至可以出现在标题中,因此:

### <a name="head1234"></a>A Heading in this SO entry!

产生:

此 SO 条目中的标题!

我们甚至可以链接到它:

and we can even [link](#head1234) to it so:

(在 SO 上,链接不起作用,因为锚已被剥离。)

于 2011-08-10T17:21:16.570 回答
646

如果 Markdown 文件中有标题,可以直接在文件中链接它们。

降价标头:

## The Header

这将生成一个隐式 id #the-header(用连字符替换内部空格并变成小写)。

要导航到此 ID,您可以创建如下链接:

[Link to Header](#the-header)

这相当于:

<a href="#the-header">Link to Header</a>

请注意引用的名称是小写的#header

于 2013-04-05T20:44:44.513 回答
148

摘自Multimarkdown用户指南(感谢 Twitter 上的@MultiMarkdown 指出)

[Some Text][]将链接到名为“Some Text”的标题<br> 例如

### Some Text ###

您选择的可选标签有助于消除多个标题具有相同标题的情况:

### Overview [MultiMarkdownOverview] ##

这允许您使用 [MultiMarkdownOverview] 来专门引用此部分,而不是另一个名为 Overview 的部分。这适用于 atx 或 settext 样式的标题。

如果您已经使用与标头相同的 id 定义了锚点,则定义的锚点优先。

除了文档中的标题之外,您还可以为图像和表格提供标签,然后也可以将其用于交叉引用。

于 2011-07-15T11:51:42.710 回答
129

我测试了一段时间的Github Flavored Markdown,可以总结出四个规则:

  1. 标点符号将被删除
  2. 前导空格将被删除
  3. 大写将转换为小写
  4. 字母之间的空格将被转换为-

例如,如果您的部分命名为:

## 1.1 Hello World

以这种方式创建指向它的链接:

[Link](#11-hello-world)
于 2016-07-21T14:57:32.207 回答
47

创建内部链接(与部分相关)的最佳方法是创建列表,但不是链接,而是放置,#section或者#section-title如果标题包含空格。

降价

Go to section
* [Hello](#hello)  
* [Hello World](#hello-world)
* [Another section](#new-section) <-- it's called 'Another section' in this list but refers to 'New section'


## Hello
### Hello World
## New section

列表预览

Go to section
Hello           <-- [Hello](#hello)                 -- go to `Hello` section
Hello World     <-- [Hello World](#hello world)     -- go to `Hello World` section
Another section <-- [Another section](#new-section) -- go to `New section`

HTML

<p>Go to section</p>
<ul>
    <li><a href="#hello">Hello</a></li>
    <li><a href="#hello-world">Hello World</a></li>
    <li><a href="#new-section">Another section</a> &lt;– it’s called ‘Another section’ in this list but refers to ‘New section’&lt;/li>
</ul>
<h2 id="hello">Hello</h2>
<h3 id="hello-world">Hello World</h3>
<h2 id="new-section">New section</h2>

不管它是否是h1, h2,h3等标题,您总是只使用一个 . 来引用它#
部分列表中的所有引用都应转换为小写文本,如上例所示。

该部分的链接应为小写。否则它将无法正常工作。这种技术适用于所有 Markdown 变体,也适用于 MultiMarkdown。

目前我正在使用Pandoc转换文档格式。它比 MultiMarkdown 好得多。
在这里测试 Pandoc

于 2016-01-23T07:48:58.380 回答
8

在 mdcharm 中是这样的:

* [Descripción](#descripcion)
* [Funcionamiento](#funcionamiento)
* [Instalación](#instalacion)
* [Configuración](#configuracion)

### Descripción {#descripcion}
### Funcionamiento {#funcionamiento}
### Instalación {#instalacion}
### Configuración {#configuracion}
于 2018-08-03T04:11:59.683 回答
3

这是我的解决方案(源自SaraubhM的答案)

**Jump To**: [Hotkeys & Markers](#hotkeys-markers) / [Radii](#radii) / [Route Wizard 2.0](#route-wizard-2-0)

这给了你:

跳转到:热键和标记 / 半径 / 路线向导 2.0

请注意链接中的变化以及链接.-丢失&

于 2017-05-04T08:32:32.877 回答
1

另一种选择(您可以将所有链接放在文件底部):

Here is an [example label].

  [example label]: #the-anchor-name-or-id "Optional title for mouse hover"
于 2021-10-11T15:44:37.933 回答