如何链接到Multimarkdown中的命名锚点?

mas*_*omi 526 markdown multimarkdown

我遇到过一些关于MultiMarkdown对内部链接/命名锚点的支持的提及,但我无法找到如何实际执行此操作的单个示例.

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

Ste*_*ell 628

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

(这是使用name=与否id=,原因在于本答复中解释的原因.)

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

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

### <a name="head1234"></a>A Heading in this SO entry!
Run Code Online (Sandbox Code Playgroud)

生产:

在这个SO条目中的标题!

我们甚至可以链接到它:

and we can even [link](#head1234) to it so:
Run Code Online (Sandbox Code Playgroud)

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

  • @jj1bdx我现在这样做 - "<a id="id"> </a>"形式是最好的.请参阅[此SO问题/答案](http://stackoverflow.com/questions/5319754/cross-reference-named-anchor-in-markdown/7335259#7335259). (10认同)
  • Fyi:Github markdown希望你使用name =而不是id,似乎. (3认同)
  • 适用于github-flavoured-markdown(红宝石宝石按预期呈现) (3认同)
  • @Dieter:`name=` 在 XHTML 中被弃用,但现在我发现 `id=` 在 HTML5 中有副作用,所以我在这个答案中恢复到 `name=`。 (2认同)

Sau*_*bhM 385

如果您在markdown文件中有标题,则可以直接在文件中链接它们.

Markdown标题 -

## The Header

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

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

[Link to Header](#the-header)

这相当于:

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

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

  • BitBucket似乎在锚标识前加上"markdown-header-".因此,如果你的标题是`## This Header ##`,那么链接将是`[To This Header](#markdown-header-this-header)`.如果您不确定标头的ID是什么,请使用页面检查器查看HTML值. (28认同)
  • @SaurabhM这只会在你对HTML转换器的降价不符合标准时起作用.该标准不会创建锚标记.现在,许多人不坚持,但你不应该_expect_这在任何地方工作. (9认同)
  • 为什么哦为什么我们必须*标准*在*标准**和半成品Markdown.不能等待AsciiDoc带头. (8认同)
  • 在 Pandoc 扩展降价中对我不起作用,可能在其他地方起作用。 (2认同)
  • GitHub 在标头名称之前添加用户内容:“[Link](user-content-the-header)” (2认同)

mas*_*omi 134

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

[Some Text][]将链接到名为"Some Text"的标题,
例如

### Some Text ###
Run Code Online (Sandbox Code Playgroud)

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

### Overview [MultiMarkdownOverview] ##
Run Code Online (Sandbox Code Playgroud)

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

如果您已使用标头使用的相同ID定义了锚,则定义的锚优先.

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

  • Github似乎不支持标题中的标签? (9认同)
  • Markdown不支持脚注.因此,它不适用于大多数"Markdown"模式.然而,MultiMarkdown支持许多扩展,使作者的生活更轻松. (5认同)
  • 该链接是编写MultiMarkdown的人的文档.不确定你在codepen.io做什么,但我相信文档是准确的.请记住*MULTI*Markdown NOT Markdown. (2认同)

lon*_*kai 95

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

  1. 标点符号将被删除
  2. 领先的白色空间将被丢弃
  3. 大写将转换为更低
  4. 字母之间的空格将转换为 -

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

## 1.1 Hello World
Run Code Online (Sandbox Code Playgroud)

以这种方式创建一个链接:

[Link](#11-hello-world)
Run Code Online (Sandbox Code Playgroud)

  • 所有这些转换意味着依赖 Markdown 格式化程序对标题和标题所做的任何事情都有点糟糕。更好的是,恕我直言,使用锚点(正如最受支持的答案所建议的那样),这样链接就不会因为有人对标题进行语法/拼写更正并破坏数以千计的内部(和外部)链接而中断。 (2认同)

raf*_*fr3 20

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

---- MARKDOWN ------------------------

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
Run Code Online (Sandbox Code Playgroud)

----列表预览------------------------

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`
Run Code Online (Sandbox Code Playgroud)

---- HTML ------------------------

<p>Go to section</p>
<ul>
<li><a href="#hello">Hello</a><br />
</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>
Run Code Online (Sandbox Code Playgroud)

无论是h1,h2,h3等标头,你总是只使用一个来引用它#.
部分列表中的所有引用都应转换为小写文本,如上例所示.

链接到部分应该是小写的.换句话说它不起作用.
这种技术适用于所有Markdown变体,也适用于MultiMarkdown.

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

  • 正如其他评论中所述.这将无法在任何降价 - > html转换器实际遵循标准.在标题中创建锚标记仅在SOME转换器中发生.此外,他们不会将所有空间转换成破折号.这不能指望. (6认同)

小智 8

在mdcharm中它是这样的:

* [Descripción](#descripcion)
* [Funcionamiento](#funcionamiento)
* [Instalación](#instalacion)
* [Configuración](#configuracion)
Run Code Online (Sandbox Code Playgroud)
### Descripción {#descripcion}
### Funcionamiento {#funcionamiento}
### Instalación {#instalacion}
### Configuración {#configuracion}
Run Code Online (Sandbox Code Playgroud)