4.7リンク参照定義
リンク参照定義は、任意で最大3個のスペースによる字下げを前に置いたリンクラベル、コロン(:)、任意のスペースやタブ(最大1つの行末を含む)、リンク先、任意のスペースやタブ(最大1つの行末を含む)、任意のリンクタイトルからなります。タイトルがある場合は、リンク先とスペースやタブで区切らなければなりません。それ以外の文字を続けることはできません。
リンク参照定義は、文書の構造要素に対応するものではありません。文書の別の場所にある参照リンクや、参照形式の画像で使えるラベルを定義します。リンク参照定義は、それを使うリンクの前にも後にも置けます。
[Foo*bar\]]:my_(url) 'title (with parens)'
[Foo*bar\]]
<p><a href="my_(url)" title="title (with parens)">Foo*bar]</a></p>
タイトルは、複数行にまたがっていてもかまいません。
[foo]: /url '
title
line1
line2
'
[foo]
<p><a href="/url" title="
title
line1
line2
">foo</a></p>
ただし、空行を含めることはできません。
[foo]: /url 'title
with blank line'
[foo]
<p>[foo]: /url 'title</p>
<p>with blank line'</p>
<p>[foo]</p>
タイトルは省略できます。
リンク先は省略できません。
ただし、山括弧を使って空のリンク先を指定することはできます。
タイトルは、リンク先とスペースやタブで区切らなければなりません。
タイトルとリンク先の両方に、バックスラッシュによるエスケープと、文字どおりのバックスラッシュを含められます。
[foo]: /url\bar\*baz "foo\"bar\baz"
[foo]
<p><a href="/url%5Cbar*baz" title="foo"bar\baz">foo</a></p>
リンクは、対応する定義の前に置けます。
一致する定義が複数ある場合、最初の定義が優先されます。
リンクの節で述べたとおり、ラベルの照合では大文字と小文字を区別しません(照合を参照してください)。
ある内容がリンク参照定義であるかどうかは、そこで定義したリンク参照が文書内で使われているかどうかとは無関係です。したがって、たとえば次の文書にはリンク参照定義だけが含まれ、表示される内容はありません。
もう1つの例です。
タイトルの後にスペースとタブ以外の文字があるため、これはリンク参照定義ではありません。
これはリンク参照定義ですが、タイトルはありません。
4個のスペースで字下げされているため、これはリンク参照定義ではありません。
コードブロックの内部にあるため、これはリンク参照定義ではありません。
リンク参照定義は、段落を中断できません。
ただし、見出しや主題区切りなど、ほかのブロック要素の直後には置けます。また、後ろに空行を置く必要はありません。
# [Foo]
[foo]: /url
> bar
<h1><a href="/url">Foo</a></h1>
<blockquote>
<p>bar</p>
</blockquote>
複数のリンク参照定義を、間に空行を置かず、続けて置けます。
[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>
リンク参照定義は、リストやブロック引用などのブロックコンテナの内部にも置けます。定義は、そのコンテナの内部だけでなく、文書全体に作用します。