【发布时间】:2011-10-05 10:39:07
【问题描述】:
我曾多次提到 MultiMarkdown 对内部链接/命名锚点的支持,但我无法找到如何实际执行此操作的单个示例。
那么,表示命名锚的语法是什么,链接到它的语法与链接到任何其他 URL 的语法是什么(仅使用 #foo 而不是 http://....)?
【问题讨论】:
我曾多次提到 MultiMarkdown 对内部链接/命名锚点的支持,但我无法找到如何实际执行此操作的单个示例。
那么,表示命名锚的语法是什么,链接到它的语法与链接到任何其他 URL 的语法是什么(仅使用 #foo 而不是 http://....)?
【问题讨论】:
在标准 Markdown 中,将锚点 <a name="abcd"></a> 放置在您要链接的位置,并通过 [link text](#abcd) 在同一页面上引用它。
(这里使用name=而不是id=,原因在this answer中解释。)
远程引用当然可以使用[link text](http://...#abcd)。
只要您可以控制源文本和目标文本,这就像做梦一样。锚点甚至可以出现在标题中,因此:
### <a name="head1234"></a>A Heading in this SO entry!
产生:
我们甚至可以这样链接到它:
and we can even [link](#head1234) to it so:
(在 SO 上,链接不起作用,因为锚点已被剥离。)
【讨论】:
<a id="id"></a> 形式是最好的。见this SO question/answer。
name= 在 XHTML 中已弃用,但现在我发现 id= 在 HTML5 中有副作用,因此我在此答案中恢复为 name=。
如果markdown文件中有header,可以直接在文件中链接。
Markdown 标头:
## The Header
这将生成一个隐式 id #the-header(将内部空格替换为连字符并变为小写)。
要导航到此 ID,您可以创建如下链接:
[Link to Header](#the-header)
这相当于:
<a href="#the-header">Link to Header</a>
请注意引用的名称是小写的#header。
【讨论】:
## This Header ##,那么链接就是[To This Header](#markdown-header-this-header)。如果您不确定标题的 id 是什么,请使用页面检查器查看 HTML 值。
[Link](user-content-the-header)
取自Multimarkdown Users Guide(感谢 Twitter 上的@MultiMarkdown 指出)
[Some Text][]将链接到名为“Some Text”的标题
例如
### Some Text ###
您选择的可选标签有助于消除多个标题具有相同标题的情况:
### Overview [MultiMarkdownOverview] ##
这允许您使用 [MultiMarkdownOverview] 来专门引用此部分,而不是另一个名为 Overview 的部分。这适用于 atx 或 settext 样式的标题。
如果您已经使用与标头相同的 id 定义了锚点,则定义的锚点优先。
除了文档中的标题之外,您还可以为图像和表格提供标签,然后它们也可以用于交叉引用。
【讨论】:
我测试了Github Flavored Markdown一段时间,可以总结出四个规则:
-
例如,如果您的部分命名为:
## 1.1 Hello World
以这种方式创建指向它的链接:
[Link](#11-hello-world)
【讨论】:
README.md,可以用非 Markdown 查看器简单地阅读,最好关闭所有 HTML —— 这样更容易理解。
创建内部链接(与部分相关)的最佳方法是创建列表,但如果标题包含空格,请使用 #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> <– 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 等标头都没有关系,您始终只使用一个# 来引用它。
部分列表中的所有引用都应转换为小写文本,如上例所示。
该部分的链接应该是小写的。否则它将不起作用。这种技术适用于所有 Markdown 变体,也适用于 MultiMarkdown。
目前我正在使用Pandoc 转换文档格式。比 MultiMarkdown 好多了。
Test Pandoc here
【讨论】:
## Hello,则应将其称为 [Whatever you want](#Hello)
在 mdcharm 中是这样的:
* [Descripción](#descripcion)
* [Funcionamiento](#funcionamiento)
* [Instalación](#instalacion)
* [Configuración](#configuracion)
### Descripción {#descripcion}
### Funcionamiento {#funcionamiento}
### Instalación {#instalacion}
### Configuración {#configuracion}
【讨论】:
这是我的解决方案(来自SaraubhM的回答)
**Jump To**: [Hotkeys & Markers](#hotkeys-markers) / [Radii](#radii) / [Route Wizard 2.0](#route-wizard-2-0)
这给了你:
跳转到:热键和标记/半径/路线向导 2.0
请注意从 和. 到- 的更改以及链接中& 的丢失。
【讨论】:
另一种选择(您可以将所有链接放在文件底部):
Here is an [example label].
[example label]: #the-anchor-name-or-id "Optional title for mouse hover"
【讨论】: