# 链接引用定义

链接引用定义 (opens new window)链接标签 (opens new window)组成,最多三个空格,后跟冒号(:),可选空格 (opens new window)(包括最多一个行尾 (opens new window)),链接定义 (opens new window)可选空格 (opens new window)(包括最多一个行尾 (opens new window)),和一个可选的链接标题 (opens new window),如果它存在,必须通过空格 (opens new window)链接定义 (opens new window)分开。 该行上不会出现其他非空格字符

链接引用定义 (opens new window)不对应于文档的结构元素。相反,它定义了一个标签,可以在文档中的其他地方的引用链接 (opens new window)和引用的图像 (opens new window)中使用。链接引用定义 (opens new window)可以在使用它们的链接之前或之后进行。

示例 161

Markdown HTML 效果
[foo]: /url "title"

[foo]

<p><a href="/url" title="title">foo</a></p>

示例 162

Markdown HTML 效果
   [foo]: 
      /url  
           'the title'  

[foo]

<p><a href="/url" title="the title">foo</a></p>

示例 163

Markdown HTML 效果
[Foo*bar\]]:my_(url) 'title (with parens)'

[Foo*bar\]]

<p><a href="my_(url)" title="title (with parens)">Foo*bar]</a></p>

示例 164

Markdown HTML 效果
[Foo bar]:
<my url>
'title'

[Foo bar]

<p><a href="my%20url" title="title">Foo bar</a></p>

标题可以扩展到多行:

示例 165

Markdown HTML 效果
[foo]: /url '
title
line1
line2
'

[foo]

<p><a href="/url" title="
title
line1
line2
">foo</a></p>

但是,它不得包含空行 (opens new window)

示例 166

Markdown HTML 效果
[foo]: /url 'title

with blank line'

[foo]

<p>[foo]: /url 'title</p>
<p>with blank line'</p>
<p>[foo]</p>

标题可以省略:

示例 167

Markdown HTML 效果
[foo]:
/url

[foo]

<p><a href="/url">foo</a></p>

链接定义不得被省略:

示例 168

Markdown HTML 效果
[foo]:

[foo]

<p>[foo]:</p>
<p>[foo]</p>

然而,可以使用尖括号指定空链接定义:

示例 169

Markdown HTML 效果
[foo]: <>

[foo]

<p><a href="">foo</a></p>

必须通过空格将标题与链接定义分开:

示例 170

Markdown HTML 效果
[foo]: <bar>(baz)

[foo]

<p>[foo]: <bar>(baz)</p>
<p>[foo]</p>

标题和定义都可以包含反斜杠转义和文字反斜杠:

示例 171

Markdown HTML 效果
[foo]: /url\bar\*baz "foo\"bar\baz"

[foo]

<p><a href="/url%5Cbar*baz" title="foo&quot;bar\baz">foo</a></p>

链接可以在其相应的定义之前出现:

示例 172

Markdown HTML 效果
[foo]

[foo]: url

<p><a href="url">foo</a></p>

如果有多个匹配的定义,则第一个定义优先:

示例 173

Markdown HTML 效果
[foo]

[foo]: first
[foo]: second

<p><a href="first">foo</a></p>

链接 (opens new window)部分所述,标签的匹配不区分大小写(请参考匹配 (opens new window))。

示例 174

Markdown HTML 效果
[FOO]: /url

[Foo]

<p><a href="/url">Foo</a></p>

示例 175

Markdown HTML 效果
[ΑΓΩ]: /φου

[αγω]

<p><a href="/%CF%86%CE%BF%CF%85">αγω</a></p>

这是一个链接引用定义,没有相应的链接。它对文档没有任何贡献。

示例 176

Markdown HTML 效果
[foo]: /url


这是另一个:

示例 177

Markdown HTML 效果
[
foo
]: /url
bar

<p>bar</p>

这不是链接引用定义,因为标题后面有非空字符 (opens new window)

示例 178

Markdown HTML 效果
[foo]: /url "title" ok

<p>[foo]: /url &quot;title&quot; ok</p>

这是一个链接引用定义,但它没有标题:

示例 179

Markdown HTML 效果
[foo]: /url
"title" ok

<p>&quot;title&quot; ok</p>

这不是链接引用定义,因为它缩进了四个空格:

示例 180

Markdown HTML 效果
    [foo]: /url "title"

[foo]

<pre><code>[foo]: /url &quot;title&quot;
</code></pre>
<p>[foo]</p>

这不是链接引用定义,因为它出现在代码块中:

示例 181

Markdown HTML 效果
```
[foo]: /url
```

[foo]

<pre><code>[foo]: /url
</code></pre>
<p>[foo]</p>

链接引用定义 (opens new window)不能中断段落。

示例 182

Markdown HTML 效果
Foo
[bar]: /baz

[bar]

<p>Foo
[bar]: /baz</p>
<p>[bar]</p>

但是,它可以直接跟随其他块元素,例如标题和专门的换行,并且不需要后跟空行。

示例 183

Markdown HTML 效果
# [Foo]
[foo]: /url
> bar

<h1><a href="/url">Foo</a></h1>
<blockquote>
<p>bar</p>
</blockquote>

示例 184

Markdown HTML 效果
[foo]: /url
bar
===
[foo]

<h1>bar</h1>
<p><a href="/url">foo</a></p>

示例 185

Markdown HTML 效果
[foo]: /url
===
[foo]

<p>===
<a href="/url">foo</a></p>

几个链接引用定义可以一个接一个地进行,而不会插入空行。

示例 186

Markdown HTML 效果
[foo]: /foo-url "foo"
[bar]: /bar-url
  "bar"
[baz]: /baz-url

[foo],
[bar],
[baz]

<p><a href="/foo-url" title="foo">foo</a>,
<a href="/bar-url" title="bar">bar</a>,
<a href="/baz-url">baz</a></p>

链接引用定义 (opens new window)可以在块容器内部发生,例如列表和块引用。它们影响整个文档,而不仅仅是定义它们的容器:

示例 187

Markdown HTML 效果
[foo]

> [foo]: /url

<p><a href="/url">foo</a></p>
<blockquote>
</blockquote>

某些内容是否是链接引用定义与是否在文档中使用它定义的链接引用无关。因此,例如,以下文档仅包含链接引用定义,并且没有可见内容:

示例 188

Markdown HTML 效果
[foo]: /url