From ecbb8c717d7bd3d116e35ade4133c34e39379f9b Mon Sep 17 00:00:00 2001
From: Russ Cox
Date: Sat, 4 Sep 2021 18:47:46 -0400
Subject: [PATCH] clarify link reference definition interruptions and
continuation text
Other blocks can interrupt a link reference definition,
and link reference definitions can have continuation text
that is not fully prefixed, following the rules of paragraph
continuation text.
Document both these facts and give examples.
Fixes #688.
---
spec.txt | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 129 insertions(+), 11 deletions(-)
diff --git a/spec.txt b/spec.txt
index 3f6bf0f9..0a2cd3de 100644
--- a/spec.txt
+++ b/spec.txt
@@ -3467,16 +3467,6 @@ bar
foo
````````````````````````````````
-```````````````````````````````` example
-[foo]: /url
-===
-[foo]
-.
-===
-foo
-````````````````````````````````
-
-
Several [link reference definitions]
can occur one after another, without intervening blank lines.
@@ -3485,7 +3475,6 @@ can occur one after another, without intervening blank lines.
[bar]: /bar-url
"bar"
[baz]: /baz-url
-
[foo],
[bar],
[baz]
@@ -3495,6 +3484,120 @@ can occur one after another, without intervening blank lines.
baz
````````````````````````````````
+The text of a link reference definition can be interrupted by any block element
+that can interrupt a paragraph. These are not definitions at all,
+because what would be a multi-line title is interrupted
+by a heading, quoted text, and a fenced code block:
+
+```````````````````````````````` example
+[foo]: /url '
+# h1
+'
+
+[foo]: /url '
+> quote
+'
+
+[foo]: /url '
+```
+text
+```
+'
+
+[foo]
+.
+[foo]: /url '
+h1
+'
+[foo]: /url '
+
+quote
+'
+
+[foo]: /url '
+text
+
+'
+[foo]
+````````````````````````````````
+
+This isn't a two-line definition because the list interrupts the title,
+leaving a one-line definition:
+
+```````````````````````````````` example
+[foo]: /url
+'
+- list item
+'
+
+[foo]
+.
+'
+
+foo
+````````````````````````````````
+
+It is also possible for the URL itself to be interrupted:
+
+```````````````````````````````` example
+[foo]:
+#
+[foo]
+.
+[foo]:
+
+[foo]
+````````````````````````````````
+
+
+Because an indented code block cannot interrupt a paragraph,
+it also cannot interrupt a link reference definition:
+
+```````````````````````````````` example
+[foo]: /url '
+ not a code block
+'
+
+[foo]
+.
+foo
+````````````````````````````````
+
+Both of these are valid link reference definitions,
+leaving no text for `===` to create a setext heading:
+
+```````````````````````````````` example
+[foo]: /url
+===
+[foo]
+.
+===
+foo
+````````````````````````````````
+
+```````````````````````````````` example
+[foo]: /url 'bar'
+===
+[foo]
+.
+===
+foo
+````````````````````````````````
+
+```````````````````````````````` example
+[foo]: /url
+'bar'
+===
+[foo]
+.
+===
+foo
+````````````````````````````````
[Link reference definitions] can occur
inside block containers, like lists and block quotations. They
@@ -3511,6 +3614,21 @@ are defined:
````````````````````````````````
+The text in a link reference definition can be continued
+using the same rules as for [paragraph continuation text]:
+
+```````````````````````````````` example
+> [foo]: /url '
+hello
+'
+> [foo]
+.
+
+foo
+
+````````````````````````````````
## Paragraphs