我看到很多人提到MultiMarkdown对内部链接/命名锚的支持,但我找不到一个例子来说明如何做到这一点。

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


当前回答

创建内部链接(与sections相关)的最佳方法是创建list,但如果头文件包含空格,则放置#section或#section-title而不是link。

减价

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’</li>
</ul>
<h2 id="hello">Hello</h2>
<h3 id="hello-world">Hello World</h3>
<h2 id="new-section">New section</h2>

不管它是h1, h2, h3等头文件,你总是使用一个#来引用它。 section list中的所有引用都应转换为小写文本,如上面的示例所示。

到section的链接应该是小写的。否则它不会起作用。这一技术适用于所有Markdown变体,也适用于MultiMarkdown。

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

其他回答

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

[Some Text][]将链接到名为“Some Text”的标题 如。

### Some Text ###

一个你选择的可选标签,以帮助消除多个头具有相同标题的情况下的歧义:

### Overview [MultiMarkdownOverview] ##

这允许您使用[multimarkdowoverview]来具体地引用这个部分,而不是另一个名为Overview的部分。这适用于atx或settext样式的头文件。 如果您已经使用与头文件使用的相同id定义了一个锚,则定义的锚优先。 除了文档中的标题外,您还可以为图像和表提供标签,这些标签也可以用于交叉引用。

创建内部链接(与sections相关)的最佳方法是创建list,但如果头文件包含空格,则放置#section或#section-title而不是link。

减价

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’</li>
</ul>
<h2 id="hello">Hello</h2>
<h3 id="hello-world">Hello World</h3>
<h2 id="new-section">New section</h2>

不管它是h1, h2, h3等头文件,你总是使用一个#来引用它。 section list中的所有引用都应转换为小写文本,如上面的示例所示。

到section的链接应该是小写的。否则它不会起作用。这一技术适用于所有Markdown变体,也适用于MultiMarkdown。

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

在标准Markdown中,放置一个锚<a name="abcd"></a>,在你想链接到的地方,并通过[链接文本](#abcd)在同一页面上引用它。

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

远程引用当然可以使用[链接文本](http://...#abcd)。

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

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

生产:

一个标题在这个SO入口!

我们甚至可以这样链接它:

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

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

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

减价头:

## The Header

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

要导航到这个id,你可以像这样创建链接:

[Link to Header](#the-header)

这相当于:

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

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

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

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

例如,如果你的section是这样命名的:

## 1.1 Hello World

这样创建一个链接:

[Link](#11-hello-world)