md4c

C Markdown parser. Fast. SAX-like interface. Compliant to CommonMark specification.
git clone https://noulin.net/git/md4c.git
Log | Files | Refs | README | LICENSE

spec.txt (195431B)


      1 ---
      2 title: CommonMark Spec
      3 author: John MacFarlane
      4 version: 0.28
      5 date: '2017-08-01'
      6 license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)'
      7 ...
      8 
      9 # Introduction
     10 
     11 ## What is Markdown?
     12 
     13 Markdown is a plain text format for writing structured documents,
     14 based on conventions for indicating formatting in email
     15 and usenet posts.  It was developed by John Gruber (with
     16 help from Aaron Swartz) and released in 2004 in the form of a
     17 [syntax description](http://daringfireball.net/projects/markdown/syntax)
     18 and a Perl script (`Markdown.pl`) for converting Markdown to
     19 HTML.  In the next decade, dozens of implementations were
     20 developed in many languages.  Some extended the original
     21 Markdown syntax with conventions for footnotes, tables, and
     22 other document elements.  Some allowed Markdown documents to be
     23 rendered in formats other than HTML.  Websites like Reddit,
     24 StackOverflow, and GitHub had millions of people using Markdown.
     25 And Markdown started to be used beyond the web, to author books,
     26 articles, slide shows, letters, and lecture notes.
     27 
     28 What distinguishes Markdown from many other lightweight markup
     29 syntaxes, which are often easier to write, is its readability.
     30 As Gruber writes:
     31 
     32 > The overriding design goal for Markdown's formatting syntax is
     33 > to make it as readable as possible. The idea is that a
     34 > Markdown-formatted document should be publishable as-is, as
     35 > plain text, without looking like it's been marked up with tags
     36 > or formatting instructions.
     37 > (<http://daringfireball.net/projects/markdown/>)
     38 
     39 The point can be illustrated by comparing a sample of
     40 [AsciiDoc](http://www.methods.co.nz/asciidoc/) with
     41 an equivalent sample of Markdown.  Here is a sample of
     42 AsciiDoc from the AsciiDoc manual:
     43 
     44 ```
     45 1. List item one.
     46 +
     47 List item one continued with a second paragraph followed by an
     48 Indented block.
     49 +
     50 .................
     51 $ ls *.sh
     52 $ mv *.sh ~/tmp
     53 .................
     54 +
     55 List item continued with a third paragraph.
     56 
     57 2. List item two continued with an open block.
     58 +
     59 --
     60 This paragraph is part of the preceding list item.
     61 
     62 a. This list is nested and does not require explicit item
     63 continuation.
     64 +
     65 This paragraph is part of the preceding list item.
     66 
     67 b. List item b.
     68 
     69 This paragraph belongs to item two of the outer list.
     70 --
     71 ```
     72 
     73 And here is the equivalent in Markdown:
     74 ```
     75 1.  List item one.
     76 
     77     List item one continued with a second paragraph followed by an
     78     Indented block.
     79 
     80         $ ls *.sh
     81         $ mv *.sh ~/tmp
     82 
     83     List item continued with a third paragraph.
     84 
     85 2.  List item two continued with an open block.
     86 
     87     This paragraph is part of the preceding list item.
     88 
     89     1. This list is nested and does not require explicit item continuation.
     90 
     91        This paragraph is part of the preceding list item.
     92 
     93     2. List item b.
     94 
     95     This paragraph belongs to item two of the outer list.
     96 ```
     97 
     98 The AsciiDoc version is, arguably, easier to write. You don't need
     99 to worry about indentation.  But the Markdown version is much easier
    100 to read.  The nesting of list items is apparent to the eye in the
    101 source, not just in the processed document.
    102 
    103 ## Why is a spec needed?
    104 
    105 John Gruber's [canonical description of Markdown's
    106 syntax](http://daringfireball.net/projects/markdown/syntax)
    107 does not specify the syntax unambiguously.  Here are some examples of
    108 questions it does not answer:
    109 
    110 1.  How much indentation is needed for a sublist?  The spec says that
    111     continuation paragraphs need to be indented four spaces, but is
    112     not fully explicit about sublists.  It is natural to think that
    113     they, too, must be indented four spaces, but `Markdown.pl` does
    114     not require that.  This is hardly a "corner case," and divergences
    115     between implementations on this issue often lead to surprises for
    116     users in real documents. (See [this comment by John
    117     Gruber](http://article.gmane.org/gmane.text.markdown.general/1997).)
    118 
    119 2.  Is a blank line needed before a block quote or heading?
    120     Most implementations do not require the blank line.  However,
    121     this can lead to unexpected results in hard-wrapped text, and
    122     also to ambiguities in parsing (note that some implementations
    123     put the heading inside the blockquote, while others do not).
    124     (John Gruber has also spoken [in favor of requiring the blank
    125     lines](http://article.gmane.org/gmane.text.markdown.general/2146).)
    126 
    127 3.  Is a blank line needed before an indented code block?
    128     (`Markdown.pl` requires it, but this is not mentioned in the
    129     documentation, and some implementations do not require it.)
    130 
    131     ``` markdown
    132     paragraph
    133         code?
    134     ```
    135 
    136 4.  What is the exact rule for determining when list items get
    137     wrapped in `<p>` tags?  Can a list be partially "loose" and partially
    138     "tight"?  What should we do with a list like this?
    139 
    140     ``` markdown
    141     1. one
    142 
    143     2. two
    144     3. three
    145     ```
    146 
    147     Or this?
    148 
    149     ``` markdown
    150     1.  one
    151         - a
    152 
    153         - b
    154     2.  two
    155     ```
    156 
    157     (There are some relevant comments by John Gruber
    158     [here](http://article.gmane.org/gmane.text.markdown.general/2554).)
    159 
    160 5.  Can list markers be indented?  Can ordered list markers be right-aligned?
    161 
    162     ``` markdown
    163      8. item 1
    164      9. item 2
    165     10. item 2a
    166     ```
    167 
    168 6.  Is this one list with a thematic break in its second item,
    169     or two lists separated by a thematic break?
    170 
    171     ``` markdown
    172     * a
    173     * * * * *
    174     * b
    175     ```
    176 
    177 7.  When list markers change from numbers to bullets, do we have
    178     two lists or one?  (The Markdown syntax description suggests two,
    179     but the perl scripts and many other implementations produce one.)
    180 
    181     ``` markdown
    182     1. fee
    183     2. fie
    184     -  foe
    185     -  fum
    186     ```
    187 
    188 8.  What are the precedence rules for the markers of inline structure?
    189     For example, is the following a valid link, or does the code span
    190     take precedence ?
    191 
    192     ``` markdown
    193     [a backtick (`)](/url) and [another backtick (`)](/url).
    194     ```
    195 
    196 9.  What are the precedence rules for markers of emphasis and strong
    197     emphasis?  For example, how should the following be parsed?
    198 
    199     ``` markdown
    200     *foo *bar* baz*
    201     ```
    202 
    203 10. What are the precedence rules between block-level and inline-level
    204     structure?  For example, how should the following be parsed?
    205 
    206     ``` markdown
    207     - `a long code span can contain a hyphen like this
    208       - and it can screw things up`
    209     ```
    210 
    211 11. Can list items include section headings?  (`Markdown.pl` does not
    212     allow this, but does allow blockquotes to include headings.)
    213 
    214     ``` markdown
    215     - # Heading
    216     ```
    217 
    218 12. Can list items be empty?
    219 
    220     ``` markdown
    221     * a
    222     *
    223     * b
    224     ```
    225 
    226 13. Can link references be defined inside block quotes or list items?
    227 
    228     ``` markdown
    229     > Blockquote [foo].
    230     >
    231     > [foo]: /url
    232     ```
    233 
    234 14. If there are multiple definitions for the same reference, which takes
    235     precedence?
    236 
    237     ``` markdown
    238     [foo]: /url1
    239     [foo]: /url2
    240 
    241     [foo][]
    242     ```
    243 
    244 In the absence of a spec, early implementers consulted `Markdown.pl`
    245 to resolve these ambiguities.  But `Markdown.pl` was quite buggy, and
    246 gave manifestly bad results in many cases, so it was not a
    247 satisfactory replacement for a spec.
    248 
    249 Because there is no unambiguous spec, implementations have diverged
    250 considerably.  As a result, users are often surprised to find that
    251 a document that renders one way on one system (say, a github wiki)
    252 renders differently on another (say, converting to docbook using
    253 pandoc).  To make matters worse, because nothing in Markdown counts
    254 as a "syntax error," the divergence often isn't discovered right away.
    255 
    256 ## About this document
    257 
    258 This document attempts to specify Markdown syntax unambiguously.
    259 It contains many examples with side-by-side Markdown and
    260 HTML.  These are intended to double as conformance tests.  An
    261 accompanying script `spec_tests.py` can be used to run the tests
    262 against any Markdown program:
    263 
    264     python test/spec_tests.py --spec spec.txt --program PROGRAM
    265 
    266 Since this document describes how Markdown is to be parsed into
    267 an abstract syntax tree, it would have made sense to use an abstract
    268 representation of the syntax tree instead of HTML.  But HTML is capable
    269 of representing the structural distinctions we need to make, and the
    270 choice of HTML for the tests makes it possible to run the tests against
    271 an implementation without writing an abstract syntax tree renderer.
    272 
    273 This document is generated from a text file, `spec.txt`, written
    274 in Markdown with a small extension for the side-by-side tests.
    275 The script `tools/makespec.py` can be used to convert `spec.txt` into
    276 HTML or CommonMark (which can then be converted into other formats).
    277 
    278 In the examples, the `→` character is used to represent tabs.
    279 
    280 # Preliminaries
    281 
    282 ## Characters and lines
    283 
    284 Any sequence of [characters] is a valid CommonMark
    285 document.
    286 
    287 A [character](@) is a Unicode code point.  Although some
    288 code points (for example, combining accents) do not correspond to
    289 characters in an intuitive sense, all code points count as characters
    290 for purposes of this spec.
    291 
    292 This spec does not specify an encoding; it thinks of lines as composed
    293 of [characters] rather than bytes.  A conforming parser may be limited
    294 to a certain encoding.
    295 
    296 A [line](@) is a sequence of zero or more [characters]
    297 other than newline (`U+000A`) or carriage return (`U+000D`),
    298 followed by a [line ending] or by the end of file.
    299 
    300 A [line ending](@) is a newline (`U+000A`), a carriage return
    301 (`U+000D`) not followed by a newline, or a carriage return and a
    302 following newline.
    303 
    304 A line containing no characters, or a line containing only spaces
    305 (`U+0020`) or tabs (`U+0009`), is called a [blank line](@).
    306 
    307 The following definitions of character classes will be used in this spec:
    308 
    309 A [whitespace character](@) is a space
    310 (`U+0020`), tab (`U+0009`), newline (`U+000A`), line tabulation (`U+000B`),
    311 form feed (`U+000C`), or carriage return (`U+000D`).
    312 
    313 [Whitespace](@) is a sequence of one or more [whitespace
    314 characters].
    315 
    316 A [Unicode whitespace character](@) is
    317 any code point in the Unicode `Zs` general category, or a tab (`U+0009`),
    318 carriage return (`U+000D`), newline (`U+000A`), or form feed
    319 (`U+000C`).
    320 
    321 [Unicode whitespace](@) is a sequence of one
    322 or more [Unicode whitespace characters].
    323 
    324 A [space](@) is `U+0020`.
    325 
    326 A [non-whitespace character](@) is any character
    327 that is not a [whitespace character].
    328 
    329 An [ASCII punctuation character](@)
    330 is `!`, `"`, `#`, `$`, `%`, `&`, `'`, `(`, `)`,
    331 `*`, `+`, `,`, `-`, `.`, `/`, `:`, `;`, `<`, `=`, `>`, `?`, `@`,
    332 `[`, `\`, `]`, `^`, `_`, `` ` ``, `{`, `|`, `}`, or `~`.
    333 
    334 A [punctuation character](@) is an [ASCII
    335 punctuation character] or anything in
    336 the general Unicode categories  `Pc`, `Pd`, `Pe`, `Pf`, `Pi`, `Po`, or `Ps`.
    337 
    338 ## Tabs
    339 
    340 Tabs in lines are not expanded to [spaces].  However,
    341 in contexts where whitespace helps to define block structure,
    342 tabs behave as if they were replaced by spaces with a tab stop
    343 of 4 characters.
    344 
    345 Thus, for example, a tab can be used instead of four spaces
    346 in an indented code block.  (Note, however, that internal
    347 tabs are passed through as literal tabs, not expanded to
    348 spaces.)
    349 
    350 ```````````````````````````````` example
    351 →foo→baz→→bim
    352 .
    353 <pre><code>foo→baz→→bim
    354 </code></pre>
    355 ````````````````````````````````
    356 
    357 ```````````````````````````````` example
    358   →foo→baz→→bim
    359 .
    360 <pre><code>foo→baz→→bim
    361 </code></pre>
    362 ````````````````````````````````
    363 
    364 ```````````````````````````````` example
    365     a→a
    366     ὐ→a
    367 .
    368 <pre><code>a→a
    369 ὐ→a
    370 </code></pre>
    371 ````````````````````````````````
    372 
    373 In the following example, a continuation paragraph of a list
    374 item is indented with a tab; this has exactly the same effect
    375 as indentation with four spaces would:
    376 
    377 ```````````````````````````````` example
    378   - foo
    379 
    380 →bar
    381 .
    382 <ul>
    383 <li>
    384 <p>foo</p>
    385 <p>bar</p>
    386 </li>
    387 </ul>
    388 ````````````````````````````````
    389 
    390 ```````````````````````````````` example
    391 - foo
    392 
    393 →→bar
    394 .
    395 <ul>
    396 <li>
    397 <p>foo</p>
    398 <pre><code>  bar
    399 </code></pre>
    400 </li>
    401 </ul>
    402 ````````````````````````````````
    403 
    404 Normally the `>` that begins a block quote may be followed
    405 optionally by a space, which is not considered part of the
    406 content.  In the following case `>` is followed by a tab,
    407 which is treated as if it were expanded into three spaces.
    408 Since one of these spaces is considered part of the
    409 delimiter, `foo` is considered to be indented six spaces
    410 inside the block quote context, so we get an indented
    411 code block starting with two spaces.
    412 
    413 ```````````````````````````````` example
    414 >→→foo
    415 .
    416 <blockquote>
    417 <pre><code>  foo
    418 </code></pre>
    419 </blockquote>
    420 ````````````````````````````````
    421 
    422 ```````````````````````````````` example
    423 -→→foo
    424 .
    425 <ul>
    426 <li>
    427 <pre><code>  foo
    428 </code></pre>
    429 </li>
    430 </ul>
    431 ````````````````````````````````
    432 
    433 
    434 ```````````````````````````````` example
    435     foo
    436 →bar
    437 .
    438 <pre><code>foo
    439 bar
    440 </code></pre>
    441 ````````````````````````````````
    442 
    443 ```````````````````````````````` example
    444  - foo
    445    - bar
    446 → - baz
    447 .
    448 <ul>
    449 <li>foo
    450 <ul>
    451 <li>bar
    452 <ul>
    453 <li>baz</li>
    454 </ul>
    455 </li>
    456 </ul>
    457 </li>
    458 </ul>
    459 ````````````````````````````````
    460 
    461 ```````````````````````````````` example
    462 #→Foo
    463 .
    464 <h1>Foo</h1>
    465 ````````````````````````````````
    466 
    467 ```````````````````````````````` example
    468 *→*→*→
    469 .
    470 <hr />
    471 ````````````````````````````````
    472 
    473 
    474 ## Insecure characters
    475 
    476 For security reasons, the Unicode character `U+0000` must be replaced
    477 with the REPLACEMENT CHARACTER (`U+FFFD`).
    478 
    479 # Blocks and inlines
    480 
    481 We can think of a document as a sequence of
    482 [blocks](@)---structural elements like paragraphs, block
    483 quotations, lists, headings, rules, and code blocks.  Some blocks (like
    484 block quotes and list items) contain other blocks; others (like
    485 headings and paragraphs) contain [inline](@) content---text,
    486 links, emphasized text, images, code spans, and so on.
    487 
    488 ## Precedence
    489 
    490 Indicators of block structure always take precedence over indicators
    491 of inline structure.  So, for example, the following is a list with
    492 two items, not a list with one item containing a code span:
    493 
    494 ```````````````````````````````` example
    495 - `one
    496 - two`
    497 .
    498 <ul>
    499 <li>`one</li>
    500 <li>two`</li>
    501 </ul>
    502 ````````````````````````````````
    503 
    504 
    505 This means that parsing can proceed in two steps:  first, the block
    506 structure of the document can be discerned; second, text lines inside
    507 paragraphs, headings, and other block constructs can be parsed for inline
    508 structure.  The second step requires information about link reference
    509 definitions that will be available only at the end of the first
    510 step.  Note that the first step requires processing lines in sequence,
    511 but the second can be parallelized, since the inline parsing of
    512 one block element does not affect the inline parsing of any other.
    513 
    514 ## Container blocks and leaf blocks
    515 
    516 We can divide blocks into two types:
    517 [container block](@)s,
    518 which can contain other blocks, and [leaf block](@)s,
    519 which cannot.
    520 
    521 # Leaf blocks
    522 
    523 This section describes the different kinds of leaf block that make up a
    524 Markdown document.
    525 
    526 ## Thematic breaks
    527 
    528 A line consisting of 0-3 spaces of indentation, followed by a sequence
    529 of three or more matching `-`, `_`, or `*` characters, each followed
    530 optionally by any number of spaces, forms a
    531 [thematic break](@).
    532 
    533 ```````````````````````````````` example
    534 ***
    535 ---
    536 ___
    537 .
    538 <hr />
    539 <hr />
    540 <hr />
    541 ````````````````````````````````
    542 
    543 
    544 Wrong characters:
    545 
    546 ```````````````````````````````` example
    547 +++
    548 .
    549 <p>+++</p>
    550 ````````````````````````````````
    551 
    552 
    553 ```````````````````````````````` example
    554 ===
    555 .
    556 <p>===</p>
    557 ````````````````````````````````
    558 
    559 
    560 Not enough characters:
    561 
    562 ```````````````````````````````` example
    563 --
    564 **
    565 __
    566 .
    567 <p>--
    568 **
    569 __</p>
    570 ````````````````````````````````
    571 
    572 
    573 One to three spaces indent are allowed:
    574 
    575 ```````````````````````````````` example
    576  ***
    577   ***
    578    ***
    579 .
    580 <hr />
    581 <hr />
    582 <hr />
    583 ````````````````````````````````
    584 
    585 
    586 Four spaces is too many:
    587 
    588 ```````````````````````````````` example
    589     ***
    590 .
    591 <pre><code>***
    592 </code></pre>
    593 ````````````````````````````````
    594 
    595 
    596 ```````````````````````````````` example
    597 Foo
    598     ***
    599 .
    600 <p>Foo
    601 ***</p>
    602 ````````````````````````````````
    603 
    604 
    605 More than three characters may be used:
    606 
    607 ```````````````````````````````` example
    608 _____________________________________
    609 .
    610 <hr />
    611 ````````````````````````````````
    612 
    613 
    614 Spaces are allowed between the characters:
    615 
    616 ```````````````````````````````` example
    617  - - -
    618 .
    619 <hr />
    620 ````````````````````````````````
    621 
    622 
    623 ```````````````````````````````` example
    624  **  * ** * ** * **
    625 .
    626 <hr />
    627 ````````````````````````````````
    628 
    629 
    630 ```````````````````````````````` example
    631 -     -      -      -
    632 .
    633 <hr />
    634 ````````````````````````````````
    635 
    636 
    637 Spaces are allowed at the end:
    638 
    639 ```````````````````````````````` example
    640 - - - -    
    641 .
    642 <hr />
    643 ````````````````````````````````
    644 
    645 
    646 However, no other characters may occur in the line:
    647 
    648 ```````````````````````````````` example
    649 _ _ _ _ a
    650 
    651 a------
    652 
    653 ---a---
    654 .
    655 <p>_ _ _ _ a</p>
    656 <p>a------</p>
    657 <p>---a---</p>
    658 ````````````````````````````````
    659 
    660 
    661 It is required that all of the [non-whitespace characters] be the same.
    662 So, this is not a thematic break:
    663 
    664 ```````````````````````````````` example
    665  *-*
    666 .
    667 <p><em>-</em></p>
    668 ````````````````````````````````
    669 
    670 
    671 Thematic breaks do not need blank lines before or after:
    672 
    673 ```````````````````````````````` example
    674 - foo
    675 ***
    676 - bar
    677 .
    678 <ul>
    679 <li>foo</li>
    680 </ul>
    681 <hr />
    682 <ul>
    683 <li>bar</li>
    684 </ul>
    685 ````````````````````````````````
    686 
    687 
    688 Thematic breaks can interrupt a paragraph:
    689 
    690 ```````````````````````````````` example
    691 Foo
    692 ***
    693 bar
    694 .
    695 <p>Foo</p>
    696 <hr />
    697 <p>bar</p>
    698 ````````````````````````````````
    699 
    700 
    701 If a line of dashes that meets the above conditions for being a
    702 thematic break could also be interpreted as the underline of a [setext
    703 heading], the interpretation as a
    704 [setext heading] takes precedence. Thus, for example,
    705 this is a setext heading, not a paragraph followed by a thematic break:
    706 
    707 ```````````````````````````````` example
    708 Foo
    709 ---
    710 bar
    711 .
    712 <h2>Foo</h2>
    713 <p>bar</p>
    714 ````````````````````````````````
    715 
    716 
    717 When both a thematic break and a list item are possible
    718 interpretations of a line, the thematic break takes precedence:
    719 
    720 ```````````````````````````````` example
    721 * Foo
    722 * * *
    723 * Bar
    724 .
    725 <ul>
    726 <li>Foo</li>
    727 </ul>
    728 <hr />
    729 <ul>
    730 <li>Bar</li>
    731 </ul>
    732 ````````````````````````````````
    733 
    734 
    735 If you want a thematic break in a list item, use a different bullet:
    736 
    737 ```````````````````````````````` example
    738 - Foo
    739 - * * *
    740 .
    741 <ul>
    742 <li>Foo</li>
    743 <li>
    744 <hr />
    745 </li>
    746 </ul>
    747 ````````````````````````````````
    748 
    749 
    750 ## ATX headings
    751 
    752 An [ATX heading](@)
    753 consists of a string of characters, parsed as inline content, between an
    754 opening sequence of 1--6 unescaped `#` characters and an optional
    755 closing sequence of any number of unescaped `#` characters.
    756 The opening sequence of `#` characters must be followed by a
    757 [space] or by the end of line. The optional closing sequence of `#`s must be
    758 preceded by a [space] and may be followed by spaces only.  The opening
    759 `#` character may be indented 0-3 spaces.  The raw contents of the
    760 heading are stripped of leading and trailing spaces before being parsed
    761 as inline content.  The heading level is equal to the number of `#`
    762 characters in the opening sequence.
    763 
    764 Simple headings:
    765 
    766 ```````````````````````````````` example
    767 # foo
    768 ## foo
    769 ### foo
    770 #### foo
    771 ##### foo
    772 ###### foo
    773 .
    774 <h1>foo</h1>
    775 <h2>foo</h2>
    776 <h3>foo</h3>
    777 <h4>foo</h4>
    778 <h5>foo</h5>
    779 <h6>foo</h6>
    780 ````````````````````````````````
    781 
    782 
    783 More than six `#` characters is not a heading:
    784 
    785 ```````````````````````````````` example
    786 ####### foo
    787 .
    788 <p>####### foo</p>
    789 ````````````````````````````````
    790 
    791 
    792 At least one space is required between the `#` characters and the
    793 heading's contents, unless the heading is empty.  Note that many
    794 implementations currently do not require the space.  However, the
    795 space was required by the
    796 [original ATX implementation](http://www.aaronsw.com/2002/atx/atx.py),
    797 and it helps prevent things like the following from being parsed as
    798 headings:
    799 
    800 ```````````````````````````````` example
    801 #5 bolt
    802 
    803 #hashtag
    804 .
    805 <p>#5 bolt</p>
    806 <p>#hashtag</p>
    807 ````````````````````````````````
    808 
    809 
    810 This is not a heading, because the first `#` is escaped:
    811 
    812 ```````````````````````````````` example
    813 \## foo
    814 .
    815 <p>## foo</p>
    816 ````````````````````````````````
    817 
    818 
    819 Contents are parsed as inlines:
    820 
    821 ```````````````````````````````` example
    822 # foo *bar* \*baz\*
    823 .
    824 <h1>foo <em>bar</em> *baz*</h1>
    825 ````````````````````````````````
    826 
    827 
    828 Leading and trailing blanks are ignored in parsing inline content:
    829 
    830 ```````````````````````````````` example
    831 #                  foo                     
    832 .
    833 <h1>foo</h1>
    834 ````````````````````````````````
    835 
    836 
    837 One to three spaces indentation are allowed:
    838 
    839 ```````````````````````````````` example
    840  ### foo
    841   ## foo
    842    # foo
    843 .
    844 <h3>foo</h3>
    845 <h2>foo</h2>
    846 <h1>foo</h1>
    847 ````````````````````````````````
    848 
    849 
    850 Four spaces are too much:
    851 
    852 ```````````````````````````````` example
    853     # foo
    854 .
    855 <pre><code># foo
    856 </code></pre>
    857 ````````````````````````````````
    858 
    859 
    860 ```````````````````````````````` example
    861 foo
    862     # bar
    863 .
    864 <p>foo
    865 # bar</p>
    866 ````````````````````````````````
    867 
    868 
    869 A closing sequence of `#` characters is optional:
    870 
    871 ```````````````````````````````` example
    872 ## foo ##
    873   ###   bar    ###
    874 .
    875 <h2>foo</h2>
    876 <h3>bar</h3>
    877 ````````````````````````````````
    878 
    879 
    880 It need not be the same length as the opening sequence:
    881 
    882 ```````````````````````````````` example
    883 # foo ##################################
    884 ##### foo ##
    885 .
    886 <h1>foo</h1>
    887 <h5>foo</h5>
    888 ````````````````````````````````
    889 
    890 
    891 Spaces are allowed after the closing sequence:
    892 
    893 ```````````````````````````````` example
    894 ### foo ###     
    895 .
    896 <h3>foo</h3>
    897 ````````````````````````````````
    898 
    899 
    900 A sequence of `#` characters with anything but [spaces] following it
    901 is not a closing sequence, but counts as part of the contents of the
    902 heading:
    903 
    904 ```````````````````````````````` example
    905 ### foo ### b
    906 .
    907 <h3>foo ### b</h3>
    908 ````````````````````````````````
    909 
    910 
    911 The closing sequence must be preceded by a space:
    912 
    913 ```````````````````````````````` example
    914 # foo#
    915 .
    916 <h1>foo#</h1>
    917 ````````````````````````````````
    918 
    919 
    920 Backslash-escaped `#` characters do not count as part
    921 of the closing sequence:
    922 
    923 ```````````````````````````````` example
    924 ### foo \###
    925 ## foo #\##
    926 # foo \#
    927 .
    928 <h3>foo ###</h3>
    929 <h2>foo ###</h2>
    930 <h1>foo #</h1>
    931 ````````````````````````````````
    932 
    933 
    934 ATX headings need not be separated from surrounding content by blank
    935 lines, and they can interrupt paragraphs:
    936 
    937 ```````````````````````````````` example
    938 ****
    939 ## foo
    940 ****
    941 .
    942 <hr />
    943 <h2>foo</h2>
    944 <hr />
    945 ````````````````````````````````
    946 
    947 
    948 ```````````````````````````````` example
    949 Foo bar
    950 # baz
    951 Bar foo
    952 .
    953 <p>Foo bar</p>
    954 <h1>baz</h1>
    955 <p>Bar foo</p>
    956 ````````````````````````````````
    957 
    958 
    959 ATX headings can be empty:
    960 
    961 ```````````````````````````````` example
    962 ## 
    963 #
    964 ### ###
    965 .
    966 <h2></h2>
    967 <h1></h1>
    968 <h3></h3>
    969 ````````````````````````````````
    970 
    971 
    972 ## Setext headings
    973 
    974 A [setext heading](@) consists of one or more
    975 lines of text, each containing at least one [non-whitespace
    976 character], with no more than 3 spaces indentation, followed by
    977 a [setext heading underline].  The lines of text must be such
    978 that, were they not followed by the setext heading underline,
    979 they would be interpreted as a paragraph:  they cannot be
    980 interpretable as a [code fence], [ATX heading][ATX headings],
    981 [block quote][block quotes], [thematic break][thematic breaks],
    982 [list item][list items], or [HTML block][HTML blocks].
    983 
    984 A [setext heading underline](@) is a sequence of
    985 `=` characters or a sequence of `-` characters, with no more than 3
    986 spaces indentation and any number of trailing spaces.  If a line
    987 containing a single `-` can be interpreted as an
    988 empty [list items], it should be interpreted this way
    989 and not as a [setext heading underline].
    990 
    991 The heading is a level 1 heading if `=` characters are used in
    992 the [setext heading underline], and a level 2 heading if `-`
    993 characters are used.  The contents of the heading are the result
    994 of parsing the preceding lines of text as CommonMark inline
    995 content.
    996 
    997 In general, a setext heading need not be preceded or followed by a
    998 blank line.  However, it cannot interrupt a paragraph, so when a
    999 setext heading comes after a paragraph, a blank line is needed between
   1000 them.
   1001 
   1002 Simple examples:
   1003 
   1004 ```````````````````````````````` example
   1005 Foo *bar*
   1006 =========
   1007 
   1008 Foo *bar*
   1009 ---------
   1010 .
   1011 <h1>Foo <em>bar</em></h1>
   1012 <h2>Foo <em>bar</em></h2>
   1013 ````````````````````````````````
   1014 
   1015 
   1016 The content of the header may span more than one line:
   1017 
   1018 ```````````````````````````````` example
   1019 Foo *bar
   1020 baz*
   1021 ====
   1022 .
   1023 <h1>Foo <em>bar
   1024 baz</em></h1>
   1025 ````````````````````````````````
   1026 
   1027 
   1028 The underlining can be any length:
   1029 
   1030 ```````````````````````````````` example
   1031 Foo
   1032 -------------------------
   1033 
   1034 Foo
   1035 =
   1036 .
   1037 <h2>Foo</h2>
   1038 <h1>Foo</h1>
   1039 ````````````````````````````````
   1040 
   1041 
   1042 The heading content can be indented up to three spaces, and need
   1043 not line up with the underlining:
   1044 
   1045 ```````````````````````````````` example
   1046    Foo
   1047 ---
   1048 
   1049   Foo
   1050 -----
   1051 
   1052   Foo
   1053   ===
   1054 .
   1055 <h2>Foo</h2>
   1056 <h2>Foo</h2>
   1057 <h1>Foo</h1>
   1058 ````````````````````````````````
   1059 
   1060 
   1061 Four spaces indent is too much:
   1062 
   1063 ```````````````````````````````` example
   1064     Foo
   1065     ---
   1066 
   1067     Foo
   1068 ---
   1069 .
   1070 <pre><code>Foo
   1071 ---
   1072 
   1073 Foo
   1074 </code></pre>
   1075 <hr />
   1076 ````````````````````````````````
   1077 
   1078 
   1079 The setext heading underline can be indented up to three spaces, and
   1080 may have trailing spaces:
   1081 
   1082 ```````````````````````````````` example
   1083 Foo
   1084    ----      
   1085 .
   1086 <h2>Foo</h2>
   1087 ````````````````````````````````
   1088 
   1089 
   1090 Four spaces is too much:
   1091 
   1092 ```````````````````````````````` example
   1093 Foo
   1094     ---
   1095 .
   1096 <p>Foo
   1097 ---</p>
   1098 ````````````````````````````````
   1099 
   1100 
   1101 The setext heading underline cannot contain internal spaces:
   1102 
   1103 ```````````````````````````````` example
   1104 Foo
   1105 = =
   1106 
   1107 Foo
   1108 --- -
   1109 .
   1110 <p>Foo
   1111 = =</p>
   1112 <p>Foo</p>
   1113 <hr />
   1114 ````````````````````````````````
   1115 
   1116 
   1117 Trailing spaces in the content line do not cause a line break:
   1118 
   1119 ```````````````````````````````` example
   1120 Foo  
   1121 -----
   1122 .
   1123 <h2>Foo</h2>
   1124 ````````````````````````````````
   1125 
   1126 
   1127 Nor does a backslash at the end:
   1128 
   1129 ```````````````````````````````` example
   1130 Foo\
   1131 ----
   1132 .
   1133 <h2>Foo\</h2>
   1134 ````````````````````````````````
   1135 
   1136 
   1137 Since indicators of block structure take precedence over
   1138 indicators of inline structure, the following are setext headings:
   1139 
   1140 ```````````````````````````````` example
   1141 `Foo
   1142 ----
   1143 `
   1144 
   1145 <a title="a lot
   1146 ---
   1147 of dashes"/>
   1148 .
   1149 <h2>`Foo</h2>
   1150 <p>`</p>
   1151 <h2>&lt;a title=&quot;a lot</h2>
   1152 <p>of dashes&quot;/&gt;</p>
   1153 ````````````````````````````````
   1154 
   1155 
   1156 The setext heading underline cannot be a [lazy continuation
   1157 line] in a list item or block quote:
   1158 
   1159 ```````````````````````````````` example
   1160 > Foo
   1161 ---
   1162 .
   1163 <blockquote>
   1164 <p>Foo</p>
   1165 </blockquote>
   1166 <hr />
   1167 ````````````````````````````````
   1168 
   1169 
   1170 ```````````````````````````````` example
   1171 > foo
   1172 bar
   1173 ===
   1174 .
   1175 <blockquote>
   1176 <p>foo
   1177 bar
   1178 ===</p>
   1179 </blockquote>
   1180 ````````````````````````````````
   1181 
   1182 
   1183 ```````````````````````````````` example
   1184 - Foo
   1185 ---
   1186 .
   1187 <ul>
   1188 <li>Foo</li>
   1189 </ul>
   1190 <hr />
   1191 ````````````````````````````````
   1192 
   1193 
   1194 A blank line is needed between a paragraph and a following
   1195 setext heading, since otherwise the paragraph becomes part
   1196 of the heading's content:
   1197 
   1198 ```````````````````````````````` example
   1199 Foo
   1200 Bar
   1201 ---
   1202 .
   1203 <h2>Foo
   1204 Bar</h2>
   1205 ````````````````````````````````
   1206 
   1207 
   1208 But in general a blank line is not required before or after
   1209 setext headings:
   1210 
   1211 ```````````````````````````````` example
   1212 ---
   1213 Foo
   1214 ---
   1215 Bar
   1216 ---
   1217 Baz
   1218 .
   1219 <hr />
   1220 <h2>Foo</h2>
   1221 <h2>Bar</h2>
   1222 <p>Baz</p>
   1223 ````````````````````````````````
   1224 
   1225 
   1226 Setext headings cannot be empty:
   1227 
   1228 ```````````````````````````````` example
   1229 
   1230 ====
   1231 .
   1232 <p>====</p>
   1233 ````````````````````````````````
   1234 
   1235 
   1236 Setext heading text lines must not be interpretable as block
   1237 constructs other than paragraphs.  So, the line of dashes
   1238 in these examples gets interpreted as a thematic break:
   1239 
   1240 ```````````````````````````````` example
   1241 ---
   1242 ---
   1243 .
   1244 <hr />
   1245 <hr />
   1246 ````````````````````````````````
   1247 
   1248 
   1249 ```````````````````````````````` example
   1250 - foo
   1251 -----
   1252 .
   1253 <ul>
   1254 <li>foo</li>
   1255 </ul>
   1256 <hr />
   1257 ````````````````````````````````
   1258 
   1259 
   1260 ```````````````````````````````` example
   1261     foo
   1262 ---
   1263 .
   1264 <pre><code>foo
   1265 </code></pre>
   1266 <hr />
   1267 ````````````````````````````````
   1268 
   1269 
   1270 ```````````````````````````````` example
   1271 > foo
   1272 -----
   1273 .
   1274 <blockquote>
   1275 <p>foo</p>
   1276 </blockquote>
   1277 <hr />
   1278 ````````````````````````````````
   1279 
   1280 
   1281 If you want a heading with `> foo` as its literal text, you can
   1282 use backslash escapes:
   1283 
   1284 ```````````````````````````````` example
   1285 \> foo
   1286 ------
   1287 .
   1288 <h2>&gt; foo</h2>
   1289 ````````````````````````````````
   1290 
   1291 
   1292 **Compatibility note:**  Most existing Markdown implementations
   1293 do not allow the text of setext headings to span multiple lines.
   1294 But there is no consensus about how to interpret
   1295 
   1296 ``` markdown
   1297 Foo
   1298 bar
   1299 ---
   1300 baz
   1301 ```
   1302 
   1303 One can find four different interpretations:
   1304 
   1305 1. paragraph "Foo", heading "bar", paragraph "baz"
   1306 2. paragraph "Foo bar", thematic break, paragraph "baz"
   1307 3. paragraph "Foo bar --- baz"
   1308 4. heading "Foo bar", paragraph "baz"
   1309 
   1310 We find interpretation 4 most natural, and interpretation 4
   1311 increases the expressive power of CommonMark, by allowing
   1312 multiline headings.  Authors who want interpretation 1 can
   1313 put a blank line after the first paragraph:
   1314 
   1315 ```````````````````````````````` example
   1316 Foo
   1317 
   1318 bar
   1319 ---
   1320 baz
   1321 .
   1322 <p>Foo</p>
   1323 <h2>bar</h2>
   1324 <p>baz</p>
   1325 ````````````````````````````````
   1326 
   1327 
   1328 Authors who want interpretation 2 can put blank lines around
   1329 the thematic break,
   1330 
   1331 ```````````````````````````````` example
   1332 Foo
   1333 bar
   1334 
   1335 ---
   1336 
   1337 baz
   1338 .
   1339 <p>Foo
   1340 bar</p>
   1341 <hr />
   1342 <p>baz</p>
   1343 ````````````````````````````````
   1344 
   1345 
   1346 or use a thematic break that cannot count as a [setext heading
   1347 underline], such as
   1348 
   1349 ```````````````````````````````` example
   1350 Foo
   1351 bar
   1352 * * *
   1353 baz
   1354 .
   1355 <p>Foo
   1356 bar</p>
   1357 <hr />
   1358 <p>baz</p>
   1359 ````````````````````````````````
   1360 
   1361 
   1362 Authors who want interpretation 3 can use backslash escapes:
   1363 
   1364 ```````````````````````````````` example
   1365 Foo
   1366 bar
   1367 \---
   1368 baz
   1369 .
   1370 <p>Foo
   1371 bar
   1372 ---
   1373 baz</p>
   1374 ````````````````````````````````
   1375 
   1376 
   1377 ## Indented code blocks
   1378 
   1379 An [indented code block](@) is composed of one or more
   1380 [indented chunks] separated by blank lines.
   1381 An [indented chunk](@) is a sequence of non-blank lines,
   1382 each indented four or more spaces. The contents of the code block are
   1383 the literal contents of the lines, including trailing
   1384 [line endings], minus four spaces of indentation.
   1385 An indented code block has no [info string].
   1386 
   1387 An indented code block cannot interrupt a paragraph, so there must be
   1388 a blank line between a paragraph and a following indented code block.
   1389 (A blank line is not needed, however, between a code block and a following
   1390 paragraph.)
   1391 
   1392 ```````````````````````````````` example
   1393     a simple
   1394       indented code block
   1395 .
   1396 <pre><code>a simple
   1397   indented code block
   1398 </code></pre>
   1399 ````````````````````````````````
   1400 
   1401 
   1402 If there is any ambiguity between an interpretation of indentation
   1403 as a code block and as indicating that material belongs to a [list
   1404 item][list items], the list item interpretation takes precedence:
   1405 
   1406 ```````````````````````````````` example
   1407   - foo
   1408 
   1409     bar
   1410 .
   1411 <ul>
   1412 <li>
   1413 <p>foo</p>
   1414 <p>bar</p>
   1415 </li>
   1416 </ul>
   1417 ````````````````````````````````
   1418 
   1419 
   1420 ```````````````````````````````` example
   1421 1.  foo
   1422 
   1423     - bar
   1424 .
   1425 <ol>
   1426 <li>
   1427 <p>foo</p>
   1428 <ul>
   1429 <li>bar</li>
   1430 </ul>
   1431 </li>
   1432 </ol>
   1433 ````````````````````````````````
   1434 
   1435 
   1436 
   1437 The contents of a code block are literal text, and do not get parsed
   1438 as Markdown:
   1439 
   1440 ```````````````````````````````` example
   1441     <a/>
   1442     *hi*
   1443 
   1444     - one
   1445 .
   1446 <pre><code>&lt;a/&gt;
   1447 *hi*
   1448 
   1449 - one
   1450 </code></pre>
   1451 ````````````````````````````````
   1452 
   1453 
   1454 Here we have three chunks separated by blank lines:
   1455 
   1456 ```````````````````````````````` example
   1457     chunk1
   1458 
   1459     chunk2
   1460   
   1461  
   1462  
   1463     chunk3
   1464 .
   1465 <pre><code>chunk1
   1466 
   1467 chunk2
   1468 
   1469 
   1470 
   1471 chunk3
   1472 </code></pre>
   1473 ````````````````````````````````
   1474 
   1475 
   1476 Any initial spaces beyond four will be included in the content, even
   1477 in interior blank lines:
   1478 
   1479 ```````````````````````````````` example
   1480     chunk1
   1481       
   1482       chunk2
   1483 .
   1484 <pre><code>chunk1
   1485   
   1486   chunk2
   1487 </code></pre>
   1488 ````````````````````````````````
   1489 
   1490 
   1491 An indented code block cannot interrupt a paragraph.  (This
   1492 allows hanging indents and the like.)
   1493 
   1494 ```````````````````````````````` example
   1495 Foo
   1496     bar
   1497 
   1498 .
   1499 <p>Foo
   1500 bar</p>
   1501 ````````````````````````````````
   1502 
   1503 
   1504 However, any non-blank line with fewer than four leading spaces ends
   1505 the code block immediately.  So a paragraph may occur immediately
   1506 after indented code:
   1507 
   1508 ```````````````````````````````` example
   1509     foo
   1510 bar
   1511 .
   1512 <pre><code>foo
   1513 </code></pre>
   1514 <p>bar</p>
   1515 ````````````````````````````````
   1516 
   1517 
   1518 And indented code can occur immediately before and after other kinds of
   1519 blocks:
   1520 
   1521 ```````````````````````````````` example
   1522 # Heading
   1523     foo
   1524 Heading
   1525 ------
   1526     foo
   1527 ----
   1528 .
   1529 <h1>Heading</h1>
   1530 <pre><code>foo
   1531 </code></pre>
   1532 <h2>Heading</h2>
   1533 <pre><code>foo
   1534 </code></pre>
   1535 <hr />
   1536 ````````````````````````````````
   1537 
   1538 
   1539 The first line can be indented more than four spaces:
   1540 
   1541 ```````````````````````````````` example
   1542         foo
   1543     bar
   1544 .
   1545 <pre><code>    foo
   1546 bar
   1547 </code></pre>
   1548 ````````````````````````````````
   1549 
   1550 
   1551 Blank lines preceding or following an indented code block
   1552 are not included in it:
   1553 
   1554 ```````````````````````````````` example
   1555 
   1556     
   1557     foo
   1558     
   1559 
   1560 .
   1561 <pre><code>foo
   1562 </code></pre>
   1563 ````````````````````````````````
   1564 
   1565 
   1566 Trailing spaces are included in the code block's content:
   1567 
   1568 ```````````````````````````````` example
   1569     foo  
   1570 .
   1571 <pre><code>foo  
   1572 </code></pre>
   1573 ````````````````````````````````
   1574 
   1575 
   1576 
   1577 ## Fenced code blocks
   1578 
   1579 A [code fence](@) is a sequence
   1580 of at least three consecutive backtick characters (`` ` ``) or
   1581 tildes (`~`).  (Tildes and backticks cannot be mixed.)
   1582 A [fenced code block](@)
   1583 begins with a code fence, indented no more than three spaces.
   1584 
   1585 The line with the opening code fence may optionally contain some text
   1586 following the code fence; this is trimmed of leading and trailing
   1587 spaces and called the [info string](@).
   1588 The [info string] may not contain any backtick
   1589 characters.  (The reason for this restriction is that otherwise
   1590 some inline code would be incorrectly interpreted as the
   1591 beginning of a fenced code block.)
   1592 
   1593 The content of the code block consists of all subsequent lines, until
   1594 a closing [code fence] of the same type as the code block
   1595 began with (backticks or tildes), and with at least as many backticks
   1596 or tildes as the opening code fence.  If the leading code fence is
   1597 indented N spaces, then up to N spaces of indentation are removed from
   1598 each line of the content (if present).  (If a content line is not
   1599 indented, it is preserved unchanged.  If it is indented less than N
   1600 spaces, all of the indentation is removed.)
   1601 
   1602 The closing code fence may be indented up to three spaces, and may be
   1603 followed only by spaces, which are ignored.  If the end of the
   1604 containing block (or document) is reached and no closing code fence
   1605 has been found, the code block contains all of the lines after the
   1606 opening code fence until the end of the containing block (or
   1607 document).  (An alternative spec would require backtracking in the
   1608 event that a closing code fence is not found.  But this makes parsing
   1609 much less efficient, and there seems to be no real down side to the
   1610 behavior described here.)
   1611 
   1612 A fenced code block may interrupt a paragraph, and does not require
   1613 a blank line either before or after.
   1614 
   1615 The content of a code fence is treated as literal text, not parsed
   1616 as inlines.  The first word of the [info string] is typically used to
   1617 specify the language of the code sample, and rendered in the `class`
   1618 attribute of the `code` tag.  However, this spec does not mandate any
   1619 particular treatment of the [info string].
   1620 
   1621 Here is a simple example with backticks:
   1622 
   1623 ```````````````````````````````` example
   1624 ```
   1625 <
   1626  >
   1627 ```
   1628 .
   1629 <pre><code>&lt;
   1630  &gt;
   1631 </code></pre>
   1632 ````````````````````````````````
   1633 
   1634 
   1635 With tildes:
   1636 
   1637 ```````````````````````````````` example
   1638 ~~~
   1639 <
   1640  >
   1641 ~~~
   1642 .
   1643 <pre><code>&lt;
   1644  &gt;
   1645 </code></pre>
   1646 ````````````````````````````````
   1647 
   1648 
   1649 The closing code fence must use the same character as the opening
   1650 fence:
   1651 
   1652 ```````````````````````````````` example
   1653 ```
   1654 aaa
   1655 ~~~
   1656 ```
   1657 .
   1658 <pre><code>aaa
   1659 ~~~
   1660 </code></pre>
   1661 ````````````````````````````````
   1662 
   1663 
   1664 ```````````````````````````````` example
   1665 ~~~
   1666 aaa
   1667 ```
   1668 ~~~
   1669 .
   1670 <pre><code>aaa
   1671 ```
   1672 </code></pre>
   1673 ````````````````````````````````
   1674 
   1675 
   1676 The closing code fence must be at least as long as the opening fence:
   1677 
   1678 ```````````````````````````````` example
   1679 ````
   1680 aaa
   1681 ```
   1682 ``````
   1683 .
   1684 <pre><code>aaa
   1685 ```
   1686 </code></pre>
   1687 ````````````````````````````````
   1688 
   1689 
   1690 ```````````````````````````````` example
   1691 ~~~~
   1692 aaa
   1693 ~~~
   1694 ~~~~
   1695 .
   1696 <pre><code>aaa
   1697 ~~~
   1698 </code></pre>
   1699 ````````````````````````````````
   1700 
   1701 
   1702 Unclosed code blocks are closed by the end of the document
   1703 (or the enclosing [block quote][block quotes] or [list item][list items]):
   1704 
   1705 ```````````````````````````````` example
   1706 ```
   1707 .
   1708 <pre><code></code></pre>
   1709 ````````````````````````````````
   1710 
   1711 
   1712 ```````````````````````````````` example
   1713 `````
   1714 
   1715 ```
   1716 aaa
   1717 .
   1718 <pre><code>
   1719 ```
   1720 aaa
   1721 </code></pre>
   1722 ````````````````````````````````
   1723 
   1724 
   1725 ```````````````````````````````` example
   1726 > ```
   1727 > aaa
   1728 
   1729 bbb
   1730 .
   1731 <blockquote>
   1732 <pre><code>aaa
   1733 </code></pre>
   1734 </blockquote>
   1735 <p>bbb</p>
   1736 ````````````````````````````````
   1737 
   1738 
   1739 A code block can have all empty lines as its content:
   1740 
   1741 ```````````````````````````````` example
   1742 ```
   1743 
   1744   
   1745 ```
   1746 .
   1747 <pre><code>
   1748   
   1749 </code></pre>
   1750 ````````````````````````````````
   1751 
   1752 
   1753 A code block can be empty:
   1754 
   1755 ```````````````````````````````` example
   1756 ```
   1757 ```
   1758 .
   1759 <pre><code></code></pre>
   1760 ````````````````````````````````
   1761 
   1762 
   1763 Fences can be indented.  If the opening fence is indented,
   1764 content lines will have equivalent opening indentation removed,
   1765 if present:
   1766 
   1767 ```````````````````````````````` example
   1768  ```
   1769  aaa
   1770 aaa
   1771 ```
   1772 .
   1773 <pre><code>aaa
   1774 aaa
   1775 </code></pre>
   1776 ````````````````````````````````
   1777 
   1778 
   1779 ```````````````````````````````` example
   1780   ```
   1781 aaa
   1782   aaa
   1783 aaa
   1784   ```
   1785 .
   1786 <pre><code>aaa
   1787 aaa
   1788 aaa
   1789 </code></pre>
   1790 ````````````````````````````````
   1791 
   1792 
   1793 ```````````````````````````````` example
   1794    ```
   1795    aaa
   1796     aaa
   1797   aaa
   1798    ```
   1799 .
   1800 <pre><code>aaa
   1801  aaa
   1802 aaa
   1803 </code></pre>
   1804 ````````````````````````````````
   1805 
   1806 
   1807 Four spaces indentation produces an indented code block:
   1808 
   1809 ```````````````````````````````` example
   1810     ```
   1811     aaa
   1812     ```
   1813 .
   1814 <pre><code>```
   1815 aaa
   1816 ```
   1817 </code></pre>
   1818 ````````````````````````````````
   1819 
   1820 
   1821 Closing fences may be indented by 0-3 spaces, and their indentation
   1822 need not match that of the opening fence:
   1823 
   1824 ```````````````````````````````` example
   1825 ```
   1826 aaa
   1827   ```
   1828 .
   1829 <pre><code>aaa
   1830 </code></pre>
   1831 ````````````````````````````````
   1832 
   1833 
   1834 ```````````````````````````````` example
   1835    ```
   1836 aaa
   1837   ```
   1838 .
   1839 <pre><code>aaa
   1840 </code></pre>
   1841 ````````````````````````````````
   1842 
   1843 
   1844 This is not a closing fence, because it is indented 4 spaces:
   1845 
   1846 ```````````````````````````````` example
   1847 ```
   1848 aaa
   1849     ```
   1850 .
   1851 <pre><code>aaa
   1852     ```
   1853 </code></pre>
   1854 ````````````````````````````````
   1855 
   1856 
   1857 
   1858 Code fences (opening and closing) cannot contain internal spaces:
   1859 
   1860 ```````````````````````````````` example
   1861 ``` ```
   1862 aaa
   1863 .
   1864 <p><code></code>
   1865 aaa</p>
   1866 ````````````````````````````````
   1867 
   1868 
   1869 ```````````````````````````````` example
   1870 ~~~~~~
   1871 aaa
   1872 ~~~ ~~
   1873 .
   1874 <pre><code>aaa
   1875 ~~~ ~~
   1876 </code></pre>
   1877 ````````````````````````````````
   1878 
   1879 
   1880 Fenced code blocks can interrupt paragraphs, and can be followed
   1881 directly by paragraphs, without a blank line between:
   1882 
   1883 ```````````````````````````````` example
   1884 foo
   1885 ```
   1886 bar
   1887 ```
   1888 baz
   1889 .
   1890 <p>foo</p>
   1891 <pre><code>bar
   1892 </code></pre>
   1893 <p>baz</p>
   1894 ````````````````````````````````
   1895 
   1896 
   1897 Other blocks can also occur before and after fenced code blocks
   1898 without an intervening blank line:
   1899 
   1900 ```````````````````````````````` example
   1901 foo
   1902 ---
   1903 ~~~
   1904 bar
   1905 ~~~
   1906 # baz
   1907 .
   1908 <h2>foo</h2>
   1909 <pre><code>bar
   1910 </code></pre>
   1911 <h1>baz</h1>
   1912 ````````````````````````````````
   1913 
   1914 
   1915 An [info string] can be provided after the opening code fence.
   1916 Opening and closing spaces will be stripped, and the first word, prefixed
   1917 with `language-`, is used as the value for the `class` attribute of the
   1918 `code` element within the enclosing `pre` element.
   1919 
   1920 ```````````````````````````````` example
   1921 ```ruby
   1922 def foo(x)
   1923   return 3
   1924 end
   1925 ```
   1926 .
   1927 <pre><code class="language-ruby">def foo(x)
   1928   return 3
   1929 end
   1930 </code></pre>
   1931 ````````````````````````````````
   1932 
   1933 
   1934 ```````````````````````````````` example
   1935 ~~~~    ruby startline=3 $%@#$
   1936 def foo(x)
   1937   return 3
   1938 end
   1939 ~~~~~~~
   1940 .
   1941 <pre><code class="language-ruby">def foo(x)
   1942   return 3
   1943 end
   1944 </code></pre>
   1945 ````````````````````````````````
   1946 
   1947 
   1948 ```````````````````````````````` example
   1949 ````;
   1950 ````
   1951 .
   1952 <pre><code class="language-;"></code></pre>
   1953 ````````````````````````````````
   1954 
   1955 
   1956 [Info strings] for backtick code blocks cannot contain backticks:
   1957 
   1958 ```````````````````````````````` example
   1959 ``` aa ```
   1960 foo
   1961 .
   1962 <p><code>aa</code>
   1963 foo</p>
   1964 ````````````````````````````````
   1965 
   1966 
   1967 Closing code fences cannot have [info strings]:
   1968 
   1969 ```````````````````````````````` example
   1970 ```
   1971 ``` aaa
   1972 ```
   1973 .
   1974 <pre><code>``` aaa
   1975 </code></pre>
   1976 ````````````````````````````````
   1977 
   1978 
   1979 
   1980 ## HTML blocks
   1981 
   1982 An [HTML block](@) is a group of lines that is treated
   1983 as raw HTML (and will not be escaped in HTML output).
   1984 
   1985 There are seven kinds of [HTML block], which can be defined
   1986 by their start and end conditions.  The block begins with a line that
   1987 meets a [start condition](@) (after up to three spaces
   1988 optional indentation).  It ends with the first subsequent line that
   1989 meets a matching [end condition](@), or the last line of
   1990 the document or other [container block]), if no line is encountered that meets the
   1991 [end condition].  If the first line meets both the [start condition]
   1992 and the [end condition], the block will contain just that line.
   1993 
   1994 1.  **Start condition:**  line begins with the string `<script`,
   1995 `<pre`, or `<style` (case-insensitive), followed by whitespace,
   1996 the string `>`, or the end of the line.\
   1997 **End condition:**  line contains an end tag
   1998 `</script>`, `</pre>`, or `</style>` (case-insensitive; it
   1999 need not match the start tag).
   2000 
   2001 2.  **Start condition:** line begins with the string `<!--`.\
   2002 **End condition:**  line contains the string `-->`.
   2003 
   2004 3.  **Start condition:** line begins with the string `<?`.\
   2005 **End condition:** line contains the string `?>`.
   2006 
   2007 4.  **Start condition:** line begins with the string `<!`
   2008 followed by an uppercase ASCII letter.\
   2009 **End condition:** line contains the character `>`.
   2010 
   2011 5.  **Start condition:**  line begins with the string
   2012 `<![CDATA[`.\
   2013 **End condition:** line contains the string `]]>`.
   2014 
   2015 6.  **Start condition:** line begins the string `<` or `</`
   2016 followed by one of the strings (case-insensitive) `address`,
   2017 `article`, `aside`, `base`, `basefont`, `blockquote`, `body`,
   2018 `caption`, `center`, `col`, `colgroup`, `dd`, `details`, `dialog`,
   2019 `dir`, `div`, `dl`, `dt`, `fieldset`, `figcaption`, `figure`,
   2020 `footer`, `form`, `frame`, `frameset`,
   2021 `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `head`, `header`, `hr`,
   2022 `html`, `iframe`, `legend`, `li`, `link`, `main`, `menu`, `menuitem`,
   2023 `meta`, `nav`, `noframes`, `ol`, `optgroup`, `option`, `p`, `param`,
   2024 `section`, `source`, `summary`, `table`, `tbody`, `td`,
   2025 `tfoot`, `th`, `thead`, `title`, `tr`, `track`, `ul`, followed
   2026 by [whitespace], the end of the line, the string `>`, or
   2027 the string `/>`.\
   2028 **End condition:** line is followed by a [blank line].
   2029 
   2030 7.  **Start condition:**  line begins with a complete [open tag]
   2031 or [closing tag] (with any [tag name] other than `script`,
   2032 `style`, or `pre`) followed only by [whitespace]
   2033 or the end of the line.\
   2034 **End condition:** line is followed by a [blank line].
   2035 
   2036 All types of [HTML blocks] except type 7 may interrupt
   2037 a paragraph.  Blocks of type 7 may not interrupt a paragraph.
   2038 (This restriction is intended to prevent unwanted interpretation
   2039 of long tags inside a wrapped paragraph as starting HTML blocks.)
   2040 
   2041 Some simple examples follow.  Here are some basic HTML blocks
   2042 of type 6:
   2043 
   2044 ```````````````````````````````` example
   2045 <table>
   2046   <tr>
   2047     <td>
   2048            hi
   2049     </td>
   2050   </tr>
   2051 </table>
   2052 
   2053 okay.
   2054 .
   2055 <table>
   2056   <tr>
   2057     <td>
   2058            hi
   2059     </td>
   2060   </tr>
   2061 </table>
   2062 <p>okay.</p>
   2063 ````````````````````````````````
   2064 
   2065 
   2066 ```````````````````````````````` example
   2067  <div>
   2068   *hello*
   2069          <foo><a>
   2070 .
   2071  <div>
   2072   *hello*
   2073          <foo><a>
   2074 ````````````````````````````````
   2075 
   2076 
   2077 A block can also start with a closing tag:
   2078 
   2079 ```````````````````````````````` example
   2080 </div>
   2081 *foo*
   2082 .
   2083 </div>
   2084 *foo*
   2085 ````````````````````````````````
   2086 
   2087 
   2088 Here we have two HTML blocks with a Markdown paragraph between them:
   2089 
   2090 ```````````````````````````````` example
   2091 <DIV CLASS="foo">
   2092 
   2093 *Markdown*
   2094 
   2095 </DIV>
   2096 .
   2097 <DIV CLASS="foo">
   2098 <p><em>Markdown</em></p>
   2099 </DIV>
   2100 ````````````````````````````````
   2101 
   2102 
   2103 The tag on the first line can be partial, as long
   2104 as it is split where there would be whitespace:
   2105 
   2106 ```````````````````````````````` example
   2107 <div id="foo"
   2108   class="bar">
   2109 </div>
   2110 .
   2111 <div id="foo"
   2112   class="bar">
   2113 </div>
   2114 ````````````````````````````````
   2115 
   2116 
   2117 ```````````````````````````````` example
   2118 <div id="foo" class="bar
   2119   baz">
   2120 </div>
   2121 .
   2122 <div id="foo" class="bar
   2123   baz">
   2124 </div>
   2125 ````````````````````````````````
   2126 
   2127 
   2128 An open tag need not be closed:
   2129 ```````````````````````````````` example
   2130 <div>
   2131 *foo*
   2132 
   2133 *bar*
   2134 .
   2135 <div>
   2136 *foo*
   2137 <p><em>bar</em></p>
   2138 ````````````````````````````````
   2139 
   2140 
   2141 
   2142 A partial tag need not even be completed (garbage
   2143 in, garbage out):
   2144 
   2145 ```````````````````````````````` example
   2146 <div id="foo"
   2147 *hi*
   2148 .
   2149 <div id="foo"
   2150 *hi*
   2151 ````````````````````````````````
   2152 
   2153 
   2154 ```````````````````````````````` example
   2155 <div class
   2156 foo
   2157 .
   2158 <div class
   2159 foo
   2160 ````````````````````````````````
   2161 
   2162 
   2163 The initial tag doesn't even need to be a valid
   2164 tag, as long as it starts like one:
   2165 
   2166 ```````````````````````````````` example
   2167 <div *???-&&&-<---
   2168 *foo*
   2169 .
   2170 <div *???-&&&-<---
   2171 *foo*
   2172 ````````````````````````````````
   2173 
   2174 
   2175 In type 6 blocks, the initial tag need not be on a line by
   2176 itself:
   2177 
   2178 ```````````````````````````````` example
   2179 <div><a href="bar">*foo*</a></div>
   2180 .
   2181 <div><a href="bar">*foo*</a></div>
   2182 ````````````````````````````````
   2183 
   2184 
   2185 ```````````````````````````````` example
   2186 <table><tr><td>
   2187 foo
   2188 </td></tr></table>
   2189 .
   2190 <table><tr><td>
   2191 foo
   2192 </td></tr></table>
   2193 ````````````````````````````````
   2194 
   2195 
   2196 Everything until the next blank line or end of document
   2197 gets included in the HTML block.  So, in the following
   2198 example, what looks like a Markdown code block
   2199 is actually part of the HTML block, which continues until a blank
   2200 line or the end of the document is reached:
   2201 
   2202 ```````````````````````````````` example
   2203 <div></div>
   2204 ``` c
   2205 int x = 33;
   2206 ```
   2207 .
   2208 <div></div>
   2209 ``` c
   2210 int x = 33;
   2211 ```
   2212 ````````````````````````````````
   2213 
   2214 
   2215 To start an [HTML block] with a tag that is *not* in the
   2216 list of block-level tags in (6), you must put the tag by
   2217 itself on the first line (and it must be complete):
   2218 
   2219 ```````````````````````````````` example
   2220 <a href="foo">
   2221 *bar*
   2222 </a>
   2223 .
   2224 <a href="foo">
   2225 *bar*
   2226 </a>
   2227 ````````````````````````````````
   2228 
   2229 
   2230 In type 7 blocks, the [tag name] can be anything:
   2231 
   2232 ```````````````````````````````` example
   2233 <Warning>
   2234 *bar*
   2235 </Warning>
   2236 .
   2237 <Warning>
   2238 *bar*
   2239 </Warning>
   2240 ````````````````````````````````
   2241 
   2242 
   2243 ```````````````````````````````` example
   2244 <i class="foo">
   2245 *bar*
   2246 </i>
   2247 .
   2248 <i class="foo">
   2249 *bar*
   2250 </i>
   2251 ````````````````````````````````
   2252 
   2253 
   2254 ```````````````````````````````` example
   2255 </ins>
   2256 *bar*
   2257 .
   2258 </ins>
   2259 *bar*
   2260 ````````````````````````````````
   2261 
   2262 
   2263 These rules are designed to allow us to work with tags that
   2264 can function as either block-level or inline-level tags.
   2265 The `<del>` tag is a nice example.  We can surround content with
   2266 `<del>` tags in three different ways.  In this case, we get a raw
   2267 HTML block, because the `<del>` tag is on a line by itself:
   2268 
   2269 ```````````````````````````````` example
   2270 <del>
   2271 *foo*
   2272 </del>
   2273 .
   2274 <del>
   2275 *foo*
   2276 </del>
   2277 ````````````````````````````````
   2278 
   2279 
   2280 In this case, we get a raw HTML block that just includes
   2281 the `<del>` tag (because it ends with the following blank
   2282 line).  So the contents get interpreted as CommonMark:
   2283 
   2284 ```````````````````````````````` example
   2285 <del>
   2286 
   2287 *foo*
   2288 
   2289 </del>
   2290 .
   2291 <del>
   2292 <p><em>foo</em></p>
   2293 </del>
   2294 ````````````````````````````````
   2295 
   2296 
   2297 Finally, in this case, the `<del>` tags are interpreted
   2298 as [raw HTML] *inside* the CommonMark paragraph.  (Because
   2299 the tag is not on a line by itself, we get inline HTML
   2300 rather than an [HTML block].)
   2301 
   2302 ```````````````````````````````` example
   2303 <del>*foo*</del>
   2304 .
   2305 <p><del><em>foo</em></del></p>
   2306 ````````````````````````````````
   2307 
   2308 
   2309 HTML tags designed to contain literal content
   2310 (`script`, `style`, `pre`), comments, processing instructions,
   2311 and declarations are treated somewhat differently.
   2312 Instead of ending at the first blank line, these blocks
   2313 end at the first line containing a corresponding end tag.
   2314 As a result, these blocks can contain blank lines:
   2315 
   2316 A pre tag (type 1):
   2317 
   2318 ```````````````````````````````` example
   2319 <pre language="haskell"><code>
   2320 import Text.HTML.TagSoup
   2321 
   2322 main :: IO ()
   2323 main = print $ parseTags tags
   2324 </code></pre>
   2325 okay
   2326 .
   2327 <pre language="haskell"><code>
   2328 import Text.HTML.TagSoup
   2329 
   2330 main :: IO ()
   2331 main = print $ parseTags tags
   2332 </code></pre>
   2333 <p>okay</p>
   2334 ````````````````````````````````
   2335 
   2336 
   2337 A script tag (type 1):
   2338 
   2339 ```````````````````````````````` example
   2340 <script type="text/javascript">
   2341 // JavaScript example
   2342 
   2343 document.getElementById("demo").innerHTML = "Hello JavaScript!";
   2344 </script>
   2345 okay
   2346 .
   2347 <script type="text/javascript">
   2348 // JavaScript example
   2349 
   2350 document.getElementById("demo").innerHTML = "Hello JavaScript!";
   2351 </script>
   2352 <p>okay</p>
   2353 ````````````````````````````````
   2354 
   2355 
   2356 A style tag (type 1):
   2357 
   2358 ```````````````````````````````` example
   2359 <style
   2360   type="text/css">
   2361 h1 {color:red;}
   2362 
   2363 p {color:blue;}
   2364 </style>
   2365 okay
   2366 .
   2367 <style
   2368   type="text/css">
   2369 h1 {color:red;}
   2370 
   2371 p {color:blue;}
   2372 </style>
   2373 <p>okay</p>
   2374 ````````````````````````````````
   2375 
   2376 
   2377 If there is no matching end tag, the block will end at the
   2378 end of the document (or the enclosing [block quote][block quotes]
   2379 or [list item][list items]):
   2380 
   2381 ```````````````````````````````` example
   2382 <style
   2383   type="text/css">
   2384 
   2385 foo
   2386 .
   2387 <style
   2388   type="text/css">
   2389 
   2390 foo
   2391 ````````````````````````````````
   2392 
   2393 
   2394 ```````````````````````````````` example
   2395 > <div>
   2396 > foo
   2397 
   2398 bar
   2399 .
   2400 <blockquote>
   2401 <div>
   2402 foo
   2403 </blockquote>
   2404 <p>bar</p>
   2405 ````````````````````````````````
   2406 
   2407 
   2408 ```````````````````````````````` example
   2409 - <div>
   2410 - foo
   2411 .
   2412 <ul>
   2413 <li>
   2414 <div>
   2415 </li>
   2416 <li>foo</li>
   2417 </ul>
   2418 ````````````````````````````````
   2419 
   2420 
   2421 The end tag can occur on the same line as the start tag:
   2422 
   2423 ```````````````````````````````` example
   2424 <style>p{color:red;}</style>
   2425 *foo*
   2426 .
   2427 <style>p{color:red;}</style>
   2428 <p><em>foo</em></p>
   2429 ````````````````````````````````
   2430 
   2431 
   2432 ```````````````````````````````` example
   2433 <!-- foo -->*bar*
   2434 *baz*
   2435 .
   2436 <!-- foo -->*bar*
   2437 <p><em>baz</em></p>
   2438 ````````````````````````````````
   2439 
   2440 
   2441 Note that anything on the last line after the
   2442 end tag will be included in the [HTML block]:
   2443 
   2444 ```````````````````````````````` example
   2445 <script>
   2446 foo
   2447 </script>1. *bar*
   2448 .
   2449 <script>
   2450 foo
   2451 </script>1. *bar*
   2452 ````````````````````````````````
   2453 
   2454 
   2455 A comment (type 2):
   2456 
   2457 ```````````````````````````````` example
   2458 <!-- Foo
   2459 
   2460 bar
   2461    baz -->
   2462 okay
   2463 .
   2464 <!-- Foo
   2465 
   2466 bar
   2467    baz -->
   2468 <p>okay</p>
   2469 ````````````````````````````````
   2470 
   2471 
   2472 
   2473 A processing instruction (type 3):
   2474 
   2475 ```````````````````````````````` example
   2476 <?php
   2477 
   2478   echo '>';
   2479 
   2480 ?>
   2481 okay
   2482 .
   2483 <?php
   2484 
   2485   echo '>';
   2486 
   2487 ?>
   2488 <p>okay</p>
   2489 ````````````````````````````````
   2490 
   2491 
   2492 A declaration (type 4):
   2493 
   2494 ```````````````````````````````` example
   2495 <!DOCTYPE html>
   2496 .
   2497 <!DOCTYPE html>
   2498 ````````````````````````````````
   2499 
   2500 
   2501 CDATA (type 5):
   2502 
   2503 ```````````````````````````````` example
   2504 <![CDATA[
   2505 function matchwo(a,b)
   2506 {
   2507   if (a < b && a < 0) then {
   2508     return 1;
   2509 
   2510   } else {
   2511 
   2512     return 0;
   2513   }
   2514 }
   2515 ]]>
   2516 okay
   2517 .
   2518 <![CDATA[
   2519 function matchwo(a,b)
   2520 {
   2521   if (a < b && a < 0) then {
   2522     return 1;
   2523 
   2524   } else {
   2525 
   2526     return 0;
   2527   }
   2528 }
   2529 ]]>
   2530 <p>okay</p>
   2531 ````````````````````````````````
   2532 
   2533 
   2534 The opening tag can be indented 1-3 spaces, but not 4:
   2535 
   2536 ```````````````````````````````` example
   2537   <!-- foo -->
   2538 
   2539     <!-- foo -->
   2540 .
   2541   <!-- foo -->
   2542 <pre><code>&lt;!-- foo --&gt;
   2543 </code></pre>
   2544 ````````````````````````````````
   2545 
   2546 
   2547 ```````````````````````````````` example
   2548   <div>
   2549 
   2550     <div>
   2551 .
   2552   <div>
   2553 <pre><code>&lt;div&gt;
   2554 </code></pre>
   2555 ````````````````````````````````
   2556 
   2557 
   2558 An HTML block of types 1--6 can interrupt a paragraph, and need not be
   2559 preceded by a blank line.
   2560 
   2561 ```````````````````````````````` example
   2562 Foo
   2563 <div>
   2564 bar
   2565 </div>
   2566 .
   2567 <p>Foo</p>
   2568 <div>
   2569 bar
   2570 </div>
   2571 ````````````````````````````````
   2572 
   2573 
   2574 However, a following blank line is needed, except at the end of
   2575 a document, and except for blocks of types 1--5, above:
   2576 
   2577 ```````````````````````````````` example
   2578 <div>
   2579 bar
   2580 </div>
   2581 *foo*
   2582 .
   2583 <div>
   2584 bar
   2585 </div>
   2586 *foo*
   2587 ````````````````````````````````
   2588 
   2589 
   2590 HTML blocks of type 7 cannot interrupt a paragraph:
   2591 
   2592 ```````````````````````````````` example
   2593 Foo
   2594 <a href="bar">
   2595 baz
   2596 .
   2597 <p>Foo
   2598 <a href="bar">
   2599 baz</p>
   2600 ````````````````````````````````
   2601 
   2602 
   2603 This rule differs from John Gruber's original Markdown syntax
   2604 specification, which says:
   2605 
   2606 > The only restrictions are that block-level HTML elements —
   2607 > e.g. `<div>`, `<table>`, `<pre>`, `<p>`, etc. — must be separated from
   2608 > surrounding content by blank lines, and the start and end tags of the
   2609 > block should not be indented with tabs or spaces.
   2610 
   2611 In some ways Gruber's rule is more restrictive than the one given
   2612 here:
   2613 
   2614 - It requires that an HTML block be preceded by a blank line.
   2615 - It does not allow the start tag to be indented.
   2616 - It requires a matching end tag, which it also does not allow to
   2617   be indented.
   2618 
   2619 Most Markdown implementations (including some of Gruber's own) do not
   2620 respect all of these restrictions.
   2621 
   2622 There is one respect, however, in which Gruber's rule is more liberal
   2623 than the one given here, since it allows blank lines to occur inside
   2624 an HTML block.  There are two reasons for disallowing them here.
   2625 First, it removes the need to parse balanced tags, which is
   2626 expensive and can require backtracking from the end of the document
   2627 if no matching end tag is found. Second, it provides a very simple
   2628 and flexible way of including Markdown content inside HTML tags:
   2629 simply separate the Markdown from the HTML using blank lines:
   2630 
   2631 Compare:
   2632 
   2633 ```````````````````````````````` example
   2634 <div>
   2635 
   2636 *Emphasized* text.
   2637 
   2638 </div>
   2639 .
   2640 <div>
   2641 <p><em>Emphasized</em> text.</p>
   2642 </div>
   2643 ````````````````````````````````
   2644 
   2645 
   2646 ```````````````````````````````` example
   2647 <div>
   2648 *Emphasized* text.
   2649 </div>
   2650 .
   2651 <div>
   2652 *Emphasized* text.
   2653 </div>
   2654 ````````````````````````````````
   2655 
   2656 
   2657 Some Markdown implementations have adopted a convention of
   2658 interpreting content inside tags as text if the open tag has
   2659 the attribute `markdown=1`.  The rule given above seems a simpler and
   2660 more elegant way of achieving the same expressive power, which is also
   2661 much simpler to parse.
   2662 
   2663 The main potential drawback is that one can no longer paste HTML
   2664 blocks into Markdown documents with 100% reliability.  However,
   2665 *in most cases* this will work fine, because the blank lines in
   2666 HTML are usually followed by HTML block tags.  For example:
   2667 
   2668 ```````````````````````````````` example
   2669 <table>
   2670 
   2671 <tr>
   2672 
   2673 <td>
   2674 Hi
   2675 </td>
   2676 
   2677 </tr>
   2678 
   2679 </table>
   2680 .
   2681 <table>
   2682 <tr>
   2683 <td>
   2684 Hi
   2685 </td>
   2686 </tr>
   2687 </table>
   2688 ````````````````````````````````
   2689 
   2690 
   2691 There are problems, however, if the inner tags are indented
   2692 *and* separated by spaces, as then they will be interpreted as
   2693 an indented code block:
   2694 
   2695 ```````````````````````````````` example
   2696 <table>
   2697 
   2698   <tr>
   2699 
   2700     <td>
   2701       Hi
   2702     </td>
   2703 
   2704   </tr>
   2705 
   2706 </table>
   2707 .
   2708 <table>
   2709   <tr>
   2710 <pre><code>&lt;td&gt;
   2711   Hi
   2712 &lt;/td&gt;
   2713 </code></pre>
   2714   </tr>
   2715 </table>
   2716 ````````````````````````````````
   2717 
   2718 
   2719 Fortunately, blank lines are usually not necessary and can be
   2720 deleted.  The exception is inside `<pre>` tags, but as described
   2721 above, raw HTML blocks starting with `<pre>` *can* contain blank
   2722 lines.
   2723 
   2724 ## Link reference definitions
   2725 
   2726 A [link reference definition](@)
   2727 consists of a [link label], indented up to three spaces, followed
   2728 by a colon (`:`), optional [whitespace] (including up to one
   2729 [line ending]), a [link destination],
   2730 optional [whitespace] (including up to one
   2731 [line ending]), and an optional [link
   2732 title], which if it is present must be separated
   2733 from the [link destination] by [whitespace].
   2734 No further [non-whitespace characters] may occur on the line.
   2735 
   2736 A [link reference definition]
   2737 does not correspond to a structural element of a document.  Instead, it
   2738 defines a label which can be used in [reference links]
   2739 and reference-style [images] elsewhere in the document.  [Link
   2740 reference definitions] can come either before or after the links that use
   2741 them.
   2742 
   2743 ```````````````````````````````` example
   2744 [foo]: /url "title"
   2745 
   2746 [foo]
   2747 .
   2748 <p><a href="/url" title="title">foo</a></p>
   2749 ````````````````````````````````
   2750 
   2751 
   2752 ```````````````````````````````` example
   2753    [foo]: 
   2754       /url  
   2755            'the title'  
   2756 
   2757 [foo]
   2758 .
   2759 <p><a href="/url" title="the title">foo</a></p>
   2760 ````````````````````````````````
   2761 
   2762 
   2763 ```````````````````````````````` example
   2764 [Foo*bar\]]:my_(url) 'title (with parens)'
   2765 
   2766 [Foo*bar\]]
   2767 .
   2768 <p><a href="my_(url)" title="title (with parens)">Foo*bar]</a></p>
   2769 ````````````````````````````````
   2770 
   2771 
   2772 ```````````````````````````````` example
   2773 [Foo bar]:
   2774 <my%20url>
   2775 'title'
   2776 
   2777 [Foo bar]
   2778 .
   2779 <p><a href="my%20url" title="title">Foo bar</a></p>
   2780 ````````````````````````````````
   2781 
   2782 
   2783 The title may extend over multiple lines:
   2784 
   2785 ```````````````````````````````` example
   2786 [foo]: /url '
   2787 title
   2788 line1
   2789 line2
   2790 '
   2791 
   2792 [foo]
   2793 .
   2794 <p><a href="/url" title="
   2795 title
   2796 line1
   2797 line2
   2798 ">foo</a></p>
   2799 ````````````````````````````````
   2800 
   2801 
   2802 However, it may not contain a [blank line]:
   2803 
   2804 ```````````````````````````````` example
   2805 [foo]: /url 'title
   2806 
   2807 with blank line'
   2808 
   2809 [foo]
   2810 .
   2811 <p>[foo]: /url 'title</p>
   2812 <p>with blank line'</p>
   2813 <p>[foo]</p>
   2814 ````````````````````````````````
   2815 
   2816 
   2817 The title may be omitted:
   2818 
   2819 ```````````````````````````````` example
   2820 [foo]:
   2821 /url
   2822 
   2823 [foo]
   2824 .
   2825 <p><a href="/url">foo</a></p>
   2826 ````````````````````````````````
   2827 
   2828 
   2829 The link destination may not be omitted:
   2830 
   2831 ```````````````````````````````` example
   2832 [foo]:
   2833 
   2834 [foo]
   2835 .
   2836 <p>[foo]:</p>
   2837 <p>[foo]</p>
   2838 ````````````````````````````````
   2839 
   2840 
   2841 Both title and destination can contain backslash escapes
   2842 and literal backslashes:
   2843 
   2844 ```````````````````````````````` example
   2845 [foo]: /url\bar\*baz "foo\"bar\baz"
   2846 
   2847 [foo]
   2848 .
   2849 <p><a href="/url%5Cbar*baz" title="foo&quot;bar\baz">foo</a></p>
   2850 ````````````````````````````````
   2851 
   2852 
   2853 A link can come before its corresponding definition:
   2854 
   2855 ```````````````````````````````` example
   2856 [foo]
   2857 
   2858 [foo]: url
   2859 .
   2860 <p><a href="url">foo</a></p>
   2861 ````````````````````````````````
   2862 
   2863 
   2864 If there are several matching definitions, the first one takes
   2865 precedence:
   2866 
   2867 ```````````````````````````````` example
   2868 [foo]
   2869 
   2870 [foo]: first
   2871 [foo]: second
   2872 .
   2873 <p><a href="first">foo</a></p>
   2874 ````````````````````````````````
   2875 
   2876 
   2877 As noted in the section on [Links], matching of labels is
   2878 case-insensitive (see [matches]).
   2879 
   2880 ```````````````````````````````` example
   2881 [FOO]: /url
   2882 
   2883 [Foo]
   2884 .
   2885 <p><a href="/url">Foo</a></p>
   2886 ````````````````````````````````
   2887 
   2888 
   2889 ```````````````````````````````` example
   2890 [ΑΓΩ]: /φου
   2891 
   2892 [αγω]
   2893 .
   2894 <p><a href="/%CF%86%CE%BF%CF%85">αγω</a></p>
   2895 ````````````````````````````````
   2896 
   2897 
   2898 Here is a link reference definition with no corresponding link.
   2899 It contributes nothing to the document.
   2900 
   2901 ```````````````````````````````` example
   2902 [foo]: /url
   2903 .
   2904 ````````````````````````````````
   2905 
   2906 
   2907 Here is another one:
   2908 
   2909 ```````````````````````````````` example
   2910 [
   2911 foo
   2912 ]: /url
   2913 bar
   2914 .
   2915 <p>bar</p>
   2916 ````````````````````````````````
   2917 
   2918 
   2919 This is not a link reference definition, because there are
   2920 [non-whitespace characters] after the title:
   2921 
   2922 ```````````````````````````````` example
   2923 [foo]: /url "title" ok
   2924 .
   2925 <p>[foo]: /url &quot;title&quot; ok</p>
   2926 ````````````````````````````````
   2927 
   2928 
   2929 This is a link reference definition, but it has no title:
   2930 
   2931 ```````````````````````````````` example
   2932 [foo]: /url
   2933 "title" ok
   2934 .
   2935 <p>&quot;title&quot; ok</p>
   2936 ````````````````````````````````
   2937 
   2938 
   2939 This is not a link reference definition, because it is indented
   2940 four spaces:
   2941 
   2942 ```````````````````````````````` example
   2943     [foo]: /url "title"
   2944 
   2945 [foo]
   2946 .
   2947 <pre><code>[foo]: /url &quot;title&quot;
   2948 </code></pre>
   2949 <p>[foo]</p>
   2950 ````````````````````````````````
   2951 
   2952 
   2953 This is not a link reference definition, because it occurs inside
   2954 a code block:
   2955 
   2956 ```````````````````````````````` example
   2957 ```
   2958 [foo]: /url
   2959 ```
   2960 
   2961 [foo]
   2962 .
   2963 <pre><code>[foo]: /url
   2964 </code></pre>
   2965 <p>[foo]</p>
   2966 ````````````````````````````````
   2967 
   2968 
   2969 A [link reference definition] cannot interrupt a paragraph.
   2970 
   2971 ```````````````````````````````` example
   2972 Foo
   2973 [bar]: /baz
   2974 
   2975 [bar]
   2976 .
   2977 <p>Foo
   2978 [bar]: /baz</p>
   2979 <p>[bar]</p>
   2980 ````````````````````````````````
   2981 
   2982 
   2983 However, it can directly follow other block elements, such as headings
   2984 and thematic breaks, and it need not be followed by a blank line.
   2985 
   2986 ```````````````````````````````` example
   2987 # [Foo]
   2988 [foo]: /url
   2989 > bar
   2990 .
   2991 <h1><a href="/url">Foo</a></h1>
   2992 <blockquote>
   2993 <p>bar</p>
   2994 </blockquote>
   2995 ````````````````````````````````
   2996 
   2997 
   2998 Several [link reference definitions]
   2999 can occur one after another, without intervening blank lines.
   3000 
   3001 ```````````````````````````````` example
   3002 [foo]: /foo-url "foo"
   3003 [bar]: /bar-url
   3004   "bar"
   3005 [baz]: /baz-url
   3006 
   3007 [foo],
   3008 [bar],
   3009 [baz]
   3010 .
   3011 <p><a href="/foo-url" title="foo">foo</a>,
   3012 <a href="/bar-url" title="bar">bar</a>,
   3013 <a href="/baz-url">baz</a></p>
   3014 ````````````````````````````````
   3015 
   3016 
   3017 [Link reference definitions] can occur
   3018 inside block containers, like lists and block quotations.  They
   3019 affect the entire document, not just the container in which they
   3020 are defined:
   3021 
   3022 ```````````````````````````````` example
   3023 [foo]
   3024 
   3025 > [foo]: /url
   3026 .
   3027 <p><a href="/url">foo</a></p>
   3028 <blockquote>
   3029 </blockquote>
   3030 ````````````````````````````````
   3031 
   3032 
   3033 
   3034 ## Paragraphs
   3035 
   3036 A sequence of non-blank lines that cannot be interpreted as other
   3037 kinds of blocks forms a [paragraph](@).
   3038 The contents of the paragraph are the result of parsing the
   3039 paragraph's raw content as inlines.  The paragraph's raw content
   3040 is formed by concatenating the lines and removing initial and final
   3041 [whitespace].
   3042 
   3043 A simple example with two paragraphs:
   3044 
   3045 ```````````````````````````````` example
   3046 aaa
   3047 
   3048 bbb
   3049 .
   3050 <p>aaa</p>
   3051 <p>bbb</p>
   3052 ````````````````````````````````
   3053 
   3054 
   3055 Paragraphs can contain multiple lines, but no blank lines:
   3056 
   3057 ```````````````````````````````` example
   3058 aaa
   3059 bbb
   3060 
   3061 ccc
   3062 ddd
   3063 .
   3064 <p>aaa
   3065 bbb</p>
   3066 <p>ccc
   3067 ddd</p>
   3068 ````````````````````````````````
   3069 
   3070 
   3071 Multiple blank lines between paragraph have no effect:
   3072 
   3073 ```````````````````````````````` example
   3074 aaa
   3075 
   3076 
   3077 bbb
   3078 .
   3079 <p>aaa</p>
   3080 <p>bbb</p>
   3081 ````````````````````````````````
   3082 
   3083 
   3084 Leading spaces are skipped:
   3085 
   3086 ```````````````````````````````` example
   3087   aaa
   3088  bbb
   3089 .
   3090 <p>aaa
   3091 bbb</p>
   3092 ````````````````````````````````
   3093 
   3094 
   3095 Lines after the first may be indented any amount, since indented
   3096 code blocks cannot interrupt paragraphs.
   3097 
   3098 ```````````````````````````````` example
   3099 aaa
   3100              bbb
   3101                                        ccc
   3102 .
   3103 <p>aaa
   3104 bbb
   3105 ccc</p>
   3106 ````````````````````````````````
   3107 
   3108 
   3109 However, the first line may be indented at most three spaces,
   3110 or an indented code block will be triggered:
   3111 
   3112 ```````````````````````````````` example
   3113    aaa
   3114 bbb
   3115 .
   3116 <p>aaa
   3117 bbb</p>
   3118 ````````````````````````````````
   3119 
   3120 
   3121 ```````````````````````````````` example
   3122     aaa
   3123 bbb
   3124 .
   3125 <pre><code>aaa
   3126 </code></pre>
   3127 <p>bbb</p>
   3128 ````````````````````````````````
   3129 
   3130 
   3131 Final spaces are stripped before inline parsing, so a paragraph
   3132 that ends with two or more spaces will not end with a [hard line
   3133 break]:
   3134 
   3135 ```````````````````````````````` example
   3136 aaa     
   3137 bbb     
   3138 .
   3139 <p>aaa<br />
   3140 bbb</p>
   3141 ````````````````````````````````
   3142 
   3143 
   3144 ## Blank lines
   3145 
   3146 [Blank lines] between block-level elements are ignored,
   3147 except for the role they play in determining whether a [list]
   3148 is [tight] or [loose].
   3149 
   3150 Blank lines at the beginning and end of the document are also ignored.
   3151 
   3152 ```````````````````````````````` example
   3153   
   3154 
   3155 aaa
   3156   
   3157 
   3158 # aaa
   3159 
   3160   
   3161 .
   3162 <p>aaa</p>
   3163 <h1>aaa</h1>
   3164 ````````````````````````````````
   3165 
   3166 
   3167 
   3168 # Container blocks
   3169 
   3170 A [container block] is a block that has other
   3171 blocks as its contents.  There are two basic kinds of container blocks:
   3172 [block quotes] and [list items].
   3173 [Lists] are meta-containers for [list items].
   3174 
   3175 We define the syntax for container blocks recursively.  The general
   3176 form of the definition is:
   3177 
   3178 > If X is a sequence of blocks, then the result of
   3179 > transforming X in such-and-such a way is a container of type Y
   3180 > with these blocks as its content.
   3181 
   3182 So, we explain what counts as a block quote or list item by explaining
   3183 how these can be *generated* from their contents. This should suffice
   3184 to define the syntax, although it does not give a recipe for *parsing*
   3185 these constructions.  (A recipe is provided below in the section entitled
   3186 [A parsing strategy](#appendix-a-parsing-strategy).)
   3187 
   3188 ## Block quotes
   3189 
   3190 A [block quote marker](@)
   3191 consists of 0-3 spaces of initial indent, plus (a) the character `>` together
   3192 with a following space, or (b) a single character `>` not followed by a space.
   3193 
   3194 The following rules define [block quotes]:
   3195 
   3196 1.  **Basic case.**  If a string of lines *Ls* constitute a sequence
   3197     of blocks *Bs*, then the result of prepending a [block quote
   3198     marker] to the beginning of each line in *Ls*
   3199     is a [block quote](#block-quotes) containing *Bs*.
   3200 
   3201 2.  **Laziness.**  If a string of lines *Ls* constitute a [block
   3202     quote](#block-quotes) with contents *Bs*, then the result of deleting
   3203     the initial [block quote marker] from one or
   3204     more lines in which the next [non-whitespace character] after the [block
   3205     quote marker] is [paragraph continuation
   3206     text] is a block quote with *Bs* as its content.
   3207     [Paragraph continuation text](@) is text
   3208     that will be parsed as part of the content of a paragraph, but does
   3209     not occur at the beginning of the paragraph.
   3210 
   3211 3.  **Consecutiveness.**  A document cannot contain two [block
   3212     quotes] in a row unless there is a [blank line] between them.
   3213 
   3214 Nothing else counts as a [block quote](#block-quotes).
   3215 
   3216 Here is a simple example:
   3217 
   3218 ```````````````````````````````` example
   3219 > # Foo
   3220 > bar
   3221 > baz
   3222 .
   3223 <blockquote>
   3224 <h1>Foo</h1>
   3225 <p>bar
   3226 baz</p>
   3227 </blockquote>
   3228 ````````````````````````````````
   3229 
   3230 
   3231 The spaces after the `>` characters can be omitted:
   3232 
   3233 ```````````````````````````````` example
   3234 ># Foo
   3235 >bar
   3236 > baz
   3237 .
   3238 <blockquote>
   3239 <h1>Foo</h1>
   3240 <p>bar
   3241 baz</p>
   3242 </blockquote>
   3243 ````````````````````````````````
   3244 
   3245 
   3246 The `>` characters can be indented 1-3 spaces:
   3247 
   3248 ```````````````````````````````` example
   3249    > # Foo
   3250    > bar
   3251  > baz
   3252 .
   3253 <blockquote>
   3254 <h1>Foo</h1>
   3255 <p>bar
   3256 baz</p>
   3257 </blockquote>
   3258 ````````````````````````````````
   3259 
   3260 
   3261 Four spaces gives us a code block:
   3262 
   3263 ```````````````````````````````` example
   3264     > # Foo
   3265     > bar
   3266     > baz
   3267 .
   3268 <pre><code>&gt; # Foo
   3269 &gt; bar
   3270 &gt; baz
   3271 </code></pre>
   3272 ````````````````````````````````
   3273 
   3274 
   3275 The Laziness clause allows us to omit the `>` before
   3276 [paragraph continuation text]:
   3277 
   3278 ```````````````````````````````` example
   3279 > # Foo
   3280 > bar
   3281 baz
   3282 .
   3283 <blockquote>
   3284 <h1>Foo</h1>
   3285 <p>bar
   3286 baz</p>
   3287 </blockquote>
   3288 ````````````````````````````````
   3289 
   3290 
   3291 A block quote can contain some lazy and some non-lazy
   3292 continuation lines:
   3293 
   3294 ```````````````````````````````` example
   3295 > bar
   3296 baz
   3297 > foo
   3298 .
   3299 <blockquote>
   3300 <p>bar
   3301 baz
   3302 foo</p>
   3303 </blockquote>
   3304 ````````````````````````````````
   3305 
   3306 
   3307 Laziness only applies to lines that would have been continuations of
   3308 paragraphs had they been prepended with [block quote markers].
   3309 For example, the `> ` cannot be omitted in the second line of
   3310 
   3311 ``` markdown
   3312 > foo
   3313 > ---
   3314 ```
   3315 
   3316 without changing the meaning:
   3317 
   3318 ```````````````````````````````` example
   3319 > foo
   3320 ---
   3321 .
   3322 <blockquote>
   3323 <p>foo</p>
   3324 </blockquote>
   3325 <hr />
   3326 ````````````````````````````````
   3327 
   3328 
   3329 Similarly, if we omit the `> ` in the second line of
   3330 
   3331 ``` markdown
   3332 > - foo
   3333 > - bar
   3334 ```
   3335 
   3336 then the block quote ends after the first line:
   3337 
   3338 ```````````````````````````````` example
   3339 > - foo
   3340 - bar
   3341 .
   3342 <blockquote>
   3343 <ul>
   3344 <li>foo</li>
   3345 </ul>
   3346 </blockquote>
   3347 <ul>
   3348 <li>bar</li>
   3349 </ul>
   3350 ````````````````````````````````
   3351 
   3352 
   3353 For the same reason, we can't omit the `> ` in front of
   3354 subsequent lines of an indented or fenced code block:
   3355 
   3356 ```````````````````````````````` example
   3357 >     foo
   3358     bar
   3359 .
   3360 <blockquote>
   3361 <pre><code>foo
   3362 </code></pre>
   3363 </blockquote>
   3364 <pre><code>bar
   3365 </code></pre>
   3366 ````````````````````````````````
   3367 
   3368 
   3369 ```````````````````````````````` example
   3370 > ```
   3371 foo
   3372 ```
   3373 .
   3374 <blockquote>
   3375 <pre><code></code></pre>
   3376 </blockquote>
   3377 <p>foo</p>
   3378 <pre><code></code></pre>
   3379 ````````````````````````````````
   3380 
   3381 
   3382 Note that in the following case, we have a [lazy
   3383 continuation line]:
   3384 
   3385 ```````````````````````````````` example
   3386 > foo
   3387     - bar
   3388 .
   3389 <blockquote>
   3390 <p>foo
   3391 - bar</p>
   3392 </blockquote>
   3393 ````````````````````````````````
   3394 
   3395 
   3396 To see why, note that in
   3397 
   3398 ```markdown
   3399 > foo
   3400 >     - bar
   3401 ```
   3402 
   3403 the `- bar` is indented too far to start a list, and can't
   3404 be an indented code block because indented code blocks cannot
   3405 interrupt paragraphs, so it is [paragraph continuation text].
   3406 
   3407 A block quote can be empty:
   3408 
   3409 ```````````````````````````````` example
   3410 >
   3411 .
   3412 <blockquote>
   3413 </blockquote>
   3414 ````````````````````````````````
   3415 
   3416 
   3417 ```````````````````````````````` example
   3418 >
   3419 >  
   3420 > 
   3421 .
   3422 <blockquote>
   3423 </blockquote>
   3424 ````````````````````````````````
   3425 
   3426 
   3427 A block quote can have initial or final blank lines:
   3428 
   3429 ```````````````````````````````` example
   3430 >
   3431 > foo
   3432 >  
   3433 .
   3434 <blockquote>
   3435 <p>foo</p>
   3436 </blockquote>
   3437 ````````````````````````````````
   3438 
   3439 
   3440 A blank line always separates block quotes:
   3441 
   3442 ```````````````````````````````` example
   3443 > foo
   3444 
   3445 > bar
   3446 .
   3447 <blockquote>
   3448 <p>foo</p>
   3449 </blockquote>
   3450 <blockquote>
   3451 <p>bar</p>
   3452 </blockquote>
   3453 ````````````````````````````````
   3454 
   3455 
   3456 (Most current Markdown implementations, including John Gruber's
   3457 original `Markdown.pl`, will parse this example as a single block quote
   3458 with two paragraphs.  But it seems better to allow the author to decide
   3459 whether two block quotes or one are wanted.)
   3460 
   3461 Consecutiveness means that if we put these block quotes together,
   3462 we get a single block quote:
   3463 
   3464 ```````````````````````````````` example
   3465 > foo
   3466 > bar
   3467 .
   3468 <blockquote>
   3469 <p>foo
   3470 bar</p>
   3471 </blockquote>
   3472 ````````````````````````````````
   3473 
   3474 
   3475 To get a block quote with two paragraphs, use:
   3476 
   3477 ```````````````````````````````` example
   3478 > foo
   3479 >
   3480 > bar
   3481 .
   3482 <blockquote>
   3483 <p>foo</p>
   3484 <p>bar</p>
   3485 </blockquote>
   3486 ````````````````````````````````
   3487 
   3488 
   3489 Block quotes can interrupt paragraphs:
   3490 
   3491 ```````````````````````````````` example
   3492 foo
   3493 > bar
   3494 .
   3495 <p>foo</p>
   3496 <blockquote>
   3497 <p>bar</p>
   3498 </blockquote>
   3499 ````````````````````````````````
   3500 
   3501 
   3502 In general, blank lines are not needed before or after block
   3503 quotes:
   3504 
   3505 ```````````````````````````````` example
   3506 > aaa
   3507 ***
   3508 > bbb
   3509 .
   3510 <blockquote>
   3511 <p>aaa</p>
   3512 </blockquote>
   3513 <hr />
   3514 <blockquote>
   3515 <p>bbb</p>
   3516 </blockquote>
   3517 ````````````````````````````````
   3518 
   3519 
   3520 However, because of laziness, a blank line is needed between
   3521 a block quote and a following paragraph:
   3522 
   3523 ```````````````````````````````` example
   3524 > bar
   3525 baz
   3526 .
   3527 <blockquote>
   3528 <p>bar
   3529 baz</p>
   3530 </blockquote>
   3531 ````````````````````````````````
   3532 
   3533 
   3534 ```````````````````````````````` example
   3535 > bar
   3536 
   3537 baz
   3538 .
   3539 <blockquote>
   3540 <p>bar</p>
   3541 </blockquote>
   3542 <p>baz</p>
   3543 ````````````````````````````````
   3544 
   3545 
   3546 ```````````````````````````````` example
   3547 > bar
   3548 >
   3549 baz
   3550 .
   3551 <blockquote>
   3552 <p>bar</p>
   3553 </blockquote>
   3554 <p>baz</p>
   3555 ````````````````````````````````
   3556 
   3557 
   3558 It is a consequence of the Laziness rule that any number
   3559 of initial `>`s may be omitted on a continuation line of a
   3560 nested block quote:
   3561 
   3562 ```````````````````````````````` example
   3563 > > > foo
   3564 bar
   3565 .
   3566 <blockquote>
   3567 <blockquote>
   3568 <blockquote>
   3569 <p>foo
   3570 bar</p>
   3571 </blockquote>
   3572 </blockquote>
   3573 </blockquote>
   3574 ````````````````````````````````
   3575 
   3576 
   3577 ```````````````````````````````` example
   3578 >>> foo
   3579 > bar
   3580 >>baz
   3581 .
   3582 <blockquote>
   3583 <blockquote>
   3584 <blockquote>
   3585 <p>foo
   3586 bar
   3587 baz</p>
   3588 </blockquote>
   3589 </blockquote>
   3590 </blockquote>
   3591 ````````````````````````````````
   3592 
   3593 
   3594 When including an indented code block in a block quote,
   3595 remember that the [block quote marker] includes
   3596 both the `>` and a following space.  So *five spaces* are needed after
   3597 the `>`:
   3598 
   3599 ```````````````````````````````` example
   3600 >     code
   3601 
   3602 >    not code
   3603 .
   3604 <blockquote>
   3605 <pre><code>code
   3606 </code></pre>
   3607 </blockquote>
   3608 <blockquote>
   3609 <p>not code</p>
   3610 </blockquote>
   3611 ````````````````````````````````
   3612 
   3613 
   3614 
   3615 ## List items
   3616 
   3617 A [list marker](@) is a
   3618 [bullet list marker] or an [ordered list marker].
   3619 
   3620 A [bullet list marker](@)
   3621 is a `-`, `+`, or `*` character.
   3622 
   3623 An [ordered list marker](@)
   3624 is a sequence of 1--9 arabic digits (`0-9`), followed by either a
   3625 `.` character or a `)` character.  (The reason for the length
   3626 limit is that with 10 digits we start seeing integer overflows
   3627 in some browsers.)
   3628 
   3629 The following rules define [list items]:
   3630 
   3631 1.  **Basic case.**  If a sequence of lines *Ls* constitute a sequence of
   3632     blocks *Bs* starting with a [non-whitespace character] and not separated
   3633     from each other by more than one blank line, and *M* is a list
   3634     marker of width *W* followed by 1 ≤ *N* ≤ 4 spaces, then the result
   3635     of prepending *M* and the following spaces to the first line of
   3636     *Ls*, and indenting subsequent lines of *Ls* by *W + N* spaces, is a
   3637     list item with *Bs* as its contents.  The type of the list item
   3638     (bullet or ordered) is determined by the type of its list marker.
   3639     If the list item is ordered, then it is also assigned a start
   3640     number, based on the ordered list marker.
   3641 
   3642     Exceptions: When the first list item in a [list] interrupts
   3643     a paragraph---that is, when it starts on a line that would
   3644     otherwise count as [paragraph continuation text]---then (a)
   3645     the lines *Ls* must not begin with a blank line, and (b) if
   3646     the list item is ordered, the start number must be 1.
   3647 
   3648 For example, let *Ls* be the lines
   3649 
   3650 ```````````````````````````````` example
   3651 A paragraph
   3652 with two lines.
   3653 
   3654     indented code
   3655 
   3656 > A block quote.
   3657 .
   3658 <p>A paragraph
   3659 with two lines.</p>
   3660 <pre><code>indented code
   3661 </code></pre>
   3662 <blockquote>
   3663 <p>A block quote.</p>
   3664 </blockquote>
   3665 ````````````````````````````````
   3666 
   3667 
   3668 And let *M* be the marker `1.`, and *N* = 2.  Then rule #1 says
   3669 that the following is an ordered list item with start number 1,
   3670 and the same contents as *Ls*:
   3671 
   3672 ```````````````````````````````` example
   3673 1.  A paragraph
   3674     with two lines.
   3675 
   3676         indented code
   3677 
   3678     > A block quote.
   3679 .
   3680 <ol>
   3681 <li>
   3682 <p>A paragraph
   3683 with two lines.</p>
   3684 <pre><code>indented code
   3685 </code></pre>
   3686 <blockquote>
   3687 <p>A block quote.</p>
   3688 </blockquote>
   3689 </li>
   3690 </ol>
   3691 ````````````````````````````````
   3692 
   3693 
   3694 The most important thing to notice is that the position of
   3695 the text after the list marker determines how much indentation
   3696 is needed in subsequent blocks in the list item.  If the list
   3697 marker takes up two spaces, and there are three spaces between
   3698 the list marker and the next [non-whitespace character], then blocks
   3699 must be indented five spaces in order to fall under the list
   3700 item.
   3701 
   3702 Here are some examples showing how far content must be indented to be
   3703 put under the list item:
   3704 
   3705 ```````````````````````````````` example
   3706 - one
   3707 
   3708  two
   3709 .
   3710 <ul>
   3711 <li>one</li>
   3712 </ul>
   3713 <p>two</p>
   3714 ````````````````````````````````
   3715 
   3716 
   3717 ```````````````````````````````` example
   3718 - one
   3719 
   3720   two
   3721 .
   3722 <ul>
   3723 <li>
   3724 <p>one</p>
   3725 <p>two</p>
   3726 </li>
   3727 </ul>
   3728 ````````````````````````````````
   3729 
   3730 
   3731 ```````````````````````````````` example
   3732  -    one
   3733 
   3734      two
   3735 .
   3736 <ul>
   3737 <li>one</li>
   3738 </ul>
   3739 <pre><code> two
   3740 </code></pre>
   3741 ````````````````````````````````
   3742 
   3743 
   3744 ```````````````````````````````` example
   3745  -    one
   3746 
   3747       two
   3748 .
   3749 <ul>
   3750 <li>
   3751 <p>one</p>
   3752 <p>two</p>
   3753 </li>
   3754 </ul>
   3755 ````````````````````````````````
   3756 
   3757 
   3758 It is tempting to think of this in terms of columns:  the continuation
   3759 blocks must be indented at least to the column of the first
   3760 [non-whitespace character] after the list marker. However, that is not quite right.
   3761 The spaces after the list marker determine how much relative indentation
   3762 is needed.  Which column this indentation reaches will depend on
   3763 how the list item is embedded in other constructions, as shown by
   3764 this example:
   3765 
   3766 ```````````````````````````````` example
   3767    > > 1.  one
   3768 >>
   3769 >>     two
   3770 .
   3771 <blockquote>
   3772 <blockquote>
   3773 <ol>
   3774 <li>
   3775 <p>one</p>
   3776 <p>two</p>
   3777 </li>
   3778 </ol>
   3779 </blockquote>
   3780 </blockquote>
   3781 ````````````````````````````````
   3782 
   3783 
   3784 Here `two` occurs in the same column as the list marker `1.`,
   3785 but is actually contained in the list item, because there is
   3786 sufficient indentation after the last containing blockquote marker.
   3787 
   3788 The converse is also possible.  In the following example, the word `two`
   3789 occurs far to the right of the initial text of the list item, `one`, but
   3790 it is not considered part of the list item, because it is not indented
   3791 far enough past the blockquote marker:
   3792 
   3793 ```````````````````````````````` example
   3794 >>- one
   3795 >>
   3796   >  > two
   3797 .
   3798 <blockquote>
   3799 <blockquote>
   3800 <ul>
   3801 <li>one</li>
   3802 </ul>
   3803 <p>two</p>
   3804 </blockquote>
   3805 </blockquote>
   3806 ````````````````````````````````
   3807 
   3808 
   3809 Note that at least one space is needed between the list marker and
   3810 any following content, so these are not list items:
   3811 
   3812 ```````````````````````````````` example
   3813 -one
   3814 
   3815 2.two
   3816 .
   3817 <p>-one</p>
   3818 <p>2.two</p>
   3819 ````````````````````````````````
   3820 
   3821 
   3822 A list item may contain blocks that are separated by more than
   3823 one blank line.
   3824 
   3825 ```````````````````````````````` example
   3826 - foo
   3827 
   3828 
   3829   bar
   3830 .
   3831 <ul>
   3832 <li>
   3833 <p>foo</p>
   3834 <p>bar</p>
   3835 </li>
   3836 </ul>
   3837 ````````````````````````````````
   3838 
   3839 
   3840 A list item may contain any kind of block:
   3841 
   3842 ```````````````````````````````` example
   3843 1.  foo
   3844 
   3845     ```
   3846     bar
   3847     ```
   3848 
   3849     baz
   3850 
   3851     > bam
   3852 .
   3853 <ol>
   3854 <li>
   3855 <p>foo</p>
   3856 <pre><code>bar
   3857 </code></pre>
   3858 <p>baz</p>
   3859 <blockquote>
   3860 <p>bam</p>
   3861 </blockquote>
   3862 </li>
   3863 </ol>
   3864 ````````````````````````````````
   3865 
   3866 
   3867 A list item that contains an indented code block will preserve
   3868 empty lines within the code block verbatim.
   3869 
   3870 ```````````````````````````````` example
   3871 - Foo
   3872 
   3873       bar
   3874 
   3875 
   3876       baz
   3877 .
   3878 <ul>
   3879 <li>
   3880 <p>Foo</p>
   3881 <pre><code>bar
   3882 
   3883 
   3884 baz
   3885 </code></pre>
   3886 </li>
   3887 </ul>
   3888 ````````````````````````````````
   3889 
   3890 Note that ordered list start numbers must be nine digits or less:
   3891 
   3892 ```````````````````````````````` example
   3893 123456789. ok
   3894 .
   3895 <ol start="123456789">
   3896 <li>ok</li>
   3897 </ol>
   3898 ````````````````````````````````
   3899 
   3900 
   3901 ```````````````````````````````` example
   3902 1234567890. not ok
   3903 .
   3904 <p>1234567890. not ok</p>
   3905 ````````````````````````````````
   3906 
   3907 
   3908 A start number may begin with 0s:
   3909 
   3910 ```````````````````````````````` example
   3911 0. ok
   3912 .
   3913 <ol start="0">
   3914 <li>ok</li>
   3915 </ol>
   3916 ````````````````````````````````
   3917 
   3918 
   3919 ```````````````````````````````` example
   3920 003. ok
   3921 .
   3922 <ol start="3">
   3923 <li>ok</li>
   3924 </ol>
   3925 ````````````````````````````````
   3926 
   3927 
   3928 A start number may not be negative:
   3929 
   3930 ```````````````````````````````` example
   3931 -1. not ok
   3932 .
   3933 <p>-1. not ok</p>
   3934 ````````````````````````````````
   3935 
   3936 
   3937 
   3938 2.  **Item starting with indented code.**  If a sequence of lines *Ls*
   3939     constitute a sequence of blocks *Bs* starting with an indented code
   3940     block and not separated from each other by more than one blank line,
   3941     and *M* is a list marker of width *W* followed by
   3942     one space, then the result of prepending *M* and the following
   3943     space to the first line of *Ls*, and indenting subsequent lines of
   3944     *Ls* by *W + 1* spaces, is a list item with *Bs* as its contents.
   3945     If a line is empty, then it need not be indented.  The type of the
   3946     list item (bullet or ordered) is determined by the type of its list
   3947     marker.  If the list item is ordered, then it is also assigned a
   3948     start number, based on the ordered list marker.
   3949 
   3950 An indented code block will have to be indented four spaces beyond
   3951 the edge of the region where text will be included in the list item.
   3952 In the following case that is 6 spaces:
   3953 
   3954 ```````````````````````````````` example
   3955 - foo
   3956 
   3957       bar
   3958 .
   3959 <ul>
   3960 <li>
   3961 <p>foo</p>
   3962 <pre><code>bar
   3963 </code></pre>
   3964 </li>
   3965 </ul>
   3966 ````````````````````````````````
   3967 
   3968 
   3969 And in this case it is 11 spaces:
   3970 
   3971 ```````````````````````````````` example
   3972   10.  foo
   3973 
   3974            bar
   3975 .
   3976 <ol start="10">
   3977 <li>
   3978 <p>foo</p>
   3979 <pre><code>bar
   3980 </code></pre>
   3981 </li>
   3982 </ol>
   3983 ````````````````````````````````
   3984 
   3985 
   3986 If the *first* block in the list item is an indented code block,
   3987 then by rule #2, the contents must be indented *one* space after the
   3988 list marker:
   3989 
   3990 ```````````````````````````````` example
   3991     indented code
   3992 
   3993 paragraph
   3994 
   3995     more code
   3996 .
   3997 <pre><code>indented code
   3998 </code></pre>
   3999 <p>paragraph</p>
   4000 <pre><code>more code
   4001 </code></pre>
   4002 ````````````````````````````````
   4003 
   4004 
   4005 ```````````````````````````````` example
   4006 1.     indented code
   4007 
   4008    paragraph
   4009 
   4010        more code
   4011 .
   4012 <ol>
   4013 <li>
   4014 <pre><code>indented code
   4015 </code></pre>
   4016 <p>paragraph</p>
   4017 <pre><code>more code
   4018 </code></pre>
   4019 </li>
   4020 </ol>
   4021 ````````````````````````````````
   4022 
   4023 
   4024 Note that an additional space indent is interpreted as space
   4025 inside the code block:
   4026 
   4027 ```````````````````````````````` example
   4028 1.      indented code
   4029 
   4030    paragraph
   4031 
   4032        more code
   4033 .
   4034 <ol>
   4035 <li>
   4036 <pre><code> indented code
   4037 </code></pre>
   4038 <p>paragraph</p>
   4039 <pre><code>more code
   4040 </code></pre>
   4041 </li>
   4042 </ol>
   4043 ````````````````````````````````
   4044 
   4045 
   4046 Note that rules #1 and #2 only apply to two cases:  (a) cases
   4047 in which the lines to be included in a list item begin with a
   4048 [non-whitespace character], and (b) cases in which
   4049 they begin with an indented code
   4050 block.  In a case like the following, where the first block begins with
   4051 a three-space indent, the rules do not allow us to form a list item by
   4052 indenting the whole thing and prepending a list marker:
   4053 
   4054 ```````````````````````````````` example
   4055    foo
   4056 
   4057 bar
   4058 .
   4059 <p>foo</p>
   4060 <p>bar</p>
   4061 ````````````````````````````````
   4062 
   4063 
   4064 ```````````````````````````````` example
   4065 -    foo
   4066 
   4067   bar
   4068 .
   4069 <ul>
   4070 <li>foo</li>
   4071 </ul>
   4072 <p>bar</p>
   4073 ````````````````````````````````
   4074 
   4075 
   4076 This is not a significant restriction, because when a block begins
   4077 with 1-3 spaces indent, the indentation can always be removed without
   4078 a change in interpretation, allowing rule #1 to be applied.  So, in
   4079 the above case:
   4080 
   4081 ```````````````````````````````` example
   4082 -  foo
   4083 
   4084    bar
   4085 .
   4086 <ul>
   4087 <li>
   4088 <p>foo</p>
   4089 <p>bar</p>
   4090 </li>
   4091 </ul>
   4092 ````````````````````````````````
   4093 
   4094 
   4095 3.  **Item starting with a blank line.**  If a sequence of lines *Ls*
   4096     starting with a single [blank line] constitute a (possibly empty)
   4097     sequence of blocks *Bs*, not separated from each other by more than
   4098     one blank line, and *M* is a list marker of width *W*,
   4099     then the result of prepending *M* to the first line of *Ls*, and
   4100     indenting subsequent lines of *Ls* by *W + 1* spaces, is a list
   4101     item with *Bs* as its contents.
   4102     If a line is empty, then it need not be indented.  The type of the
   4103     list item (bullet or ordered) is determined by the type of its list
   4104     marker.  If the list item is ordered, then it is also assigned a
   4105     start number, based on the ordered list marker.
   4106 
   4107 Here are some list items that start with a blank line but are not empty:
   4108 
   4109 ```````````````````````````````` example
   4110 -
   4111   foo
   4112 -
   4113   ```
   4114   bar
   4115   ```
   4116 -
   4117       baz
   4118 .
   4119 <ul>
   4120 <li>foo</li>
   4121 <li>
   4122 <pre><code>bar
   4123 </code></pre>
   4124 </li>
   4125 <li>
   4126 <pre><code>baz
   4127 </code></pre>
   4128 </li>
   4129 </ul>
   4130 ````````````````````````````````
   4131 
   4132 When the list item starts with a blank line, the number of spaces
   4133 following the list marker doesn't change the required indentation:
   4134 
   4135 ```````````````````````````````` example
   4136 -   
   4137   foo
   4138 .
   4139 <ul>
   4140 <li>foo</li>
   4141 </ul>
   4142 ````````````````````````````````
   4143 
   4144 
   4145 A list item can begin with at most one blank line.
   4146 In the following example, `foo` is not part of the list
   4147 item:
   4148 
   4149 ```````````````````````````````` example
   4150 -
   4151 
   4152   foo
   4153 .
   4154 <ul>
   4155 <li></li>
   4156 </ul>
   4157 <p>foo</p>
   4158 ````````````````````````````````
   4159 
   4160 
   4161 Here is an empty bullet list item:
   4162 
   4163 ```````````````````````````````` example
   4164 - foo
   4165 -
   4166 - bar
   4167 .
   4168 <ul>
   4169 <li>foo</li>
   4170 <li></li>
   4171 <li>bar</li>
   4172 </ul>
   4173 ````````````````````````````````
   4174 
   4175 
   4176 It does not matter whether there are spaces following the [list marker]:
   4177 
   4178 ```````````````````````````````` example
   4179 - foo
   4180 -   
   4181 - bar
   4182 .
   4183 <ul>
   4184 <li>foo</li>
   4185 <li></li>
   4186 <li>bar</li>
   4187 </ul>
   4188 ````````````````````````````````
   4189 
   4190 
   4191 Here is an empty ordered list item:
   4192 
   4193 ```````````````````````````````` example
   4194 1. foo
   4195 2.
   4196 3. bar
   4197 .
   4198 <ol>
   4199 <li>foo</li>
   4200 <li></li>
   4201 <li>bar</li>
   4202 </ol>
   4203 ````````````````````````````````
   4204 
   4205 
   4206 A list may start or end with an empty list item:
   4207 
   4208 ```````````````````````````````` example
   4209 *
   4210 .
   4211 <ul>
   4212 <li></li>
   4213 </ul>
   4214 ````````````````````````````````
   4215 
   4216 However, an empty list item cannot interrupt a paragraph:
   4217 
   4218 ```````````````````````````````` example
   4219 foo
   4220 *
   4221 
   4222 foo
   4223 1.
   4224 .
   4225 <p>foo
   4226 *</p>
   4227 <p>foo
   4228 1.</p>
   4229 ````````````````````````````````
   4230 
   4231 
   4232 4.  **Indentation.**  If a sequence of lines *Ls* constitutes a list item
   4233     according to rule #1, #2, or #3, then the result of indenting each line
   4234     of *Ls* by 1-3 spaces (the same for each line) also constitutes a
   4235     list item with the same contents and attributes.  If a line is
   4236     empty, then it need not be indented.
   4237 
   4238 Indented one space:
   4239 
   4240 ```````````````````````````````` example
   4241  1.  A paragraph
   4242      with two lines.
   4243 
   4244          indented code
   4245 
   4246      > A block quote.
   4247 .
   4248 <ol>
   4249 <li>
   4250 <p>A paragraph
   4251 with two lines.</p>
   4252 <pre><code>indented code
   4253 </code></pre>
   4254 <blockquote>
   4255 <p>A block quote.</p>
   4256 </blockquote>
   4257 </li>
   4258 </ol>
   4259 ````````````````````````````````
   4260 
   4261 
   4262 Indented two spaces:
   4263 
   4264 ```````````````````````````````` example
   4265   1.  A paragraph
   4266       with two lines.
   4267 
   4268           indented code
   4269 
   4270       > A block quote.
   4271 .
   4272 <ol>
   4273 <li>
   4274 <p>A paragraph
   4275 with two lines.</p>
   4276 <pre><code>indented code
   4277 </code></pre>
   4278 <blockquote>
   4279 <p>A block quote.</p>
   4280 </blockquote>
   4281 </li>
   4282 </ol>
   4283 ````````````````````````````````
   4284 
   4285 
   4286 Indented three spaces:
   4287 
   4288 ```````````````````````````````` example
   4289    1.  A paragraph
   4290        with two lines.
   4291 
   4292            indented code
   4293 
   4294        > A block quote.
   4295 .
   4296 <ol>
   4297 <li>
   4298 <p>A paragraph
   4299 with two lines.</p>
   4300 <pre><code>indented code
   4301 </code></pre>
   4302 <blockquote>
   4303 <p>A block quote.</p>
   4304 </blockquote>
   4305 </li>
   4306 </ol>
   4307 ````````````````````````````````
   4308 
   4309 
   4310 Four spaces indent gives a code block:
   4311 
   4312 ```````````````````````````````` example
   4313     1.  A paragraph
   4314         with two lines.
   4315 
   4316             indented code
   4317 
   4318         > A block quote.
   4319 .
   4320 <pre><code>1.  A paragraph
   4321     with two lines.
   4322 
   4323         indented code
   4324 
   4325     &gt; A block quote.
   4326 </code></pre>
   4327 ````````````````````````````````
   4328 
   4329 
   4330 
   4331 5.  **Laziness.**  If a string of lines *Ls* constitute a [list
   4332     item](#list-items) with contents *Bs*, then the result of deleting
   4333     some or all of the indentation from one or more lines in which the
   4334     next [non-whitespace character] after the indentation is
   4335     [paragraph continuation text] is a
   4336     list item with the same contents and attributes.  The unindented
   4337     lines are called
   4338     [lazy continuation line](@)s.
   4339 
   4340 Here is an example with [lazy continuation lines]:
   4341 
   4342 ```````````````````````````````` example
   4343   1.  A paragraph
   4344 with two lines.
   4345 
   4346           indented code
   4347 
   4348       > A block quote.
   4349 .
   4350 <ol>
   4351 <li>
   4352 <p>A paragraph
   4353 with two lines.</p>
   4354 <pre><code>indented code
   4355 </code></pre>
   4356 <blockquote>
   4357 <p>A block quote.</p>
   4358 </blockquote>
   4359 </li>
   4360 </ol>
   4361 ````````````````````````````````
   4362 
   4363 
   4364 Indentation can be partially deleted:
   4365 
   4366 ```````````````````````````````` example
   4367   1.  A paragraph
   4368     with two lines.
   4369 .
   4370 <ol>
   4371 <li>A paragraph
   4372 with two lines.</li>
   4373 </ol>
   4374 ````````````````````````````````
   4375 
   4376 
   4377 These examples show how laziness can work in nested structures:
   4378 
   4379 ```````````````````````````````` example
   4380 > 1. > Blockquote
   4381 continued here.
   4382 .
   4383 <blockquote>
   4384 <ol>
   4385 <li>
   4386 <blockquote>
   4387 <p>Blockquote
   4388 continued here.</p>
   4389 </blockquote>
   4390 </li>
   4391 </ol>
   4392 </blockquote>
   4393 ````````````````````````````````
   4394 
   4395 
   4396 ```````````````````````````````` example
   4397 > 1. > Blockquote
   4398 > continued here.
   4399 .
   4400 <blockquote>
   4401 <ol>
   4402 <li>
   4403 <blockquote>
   4404 <p>Blockquote
   4405 continued here.</p>
   4406 </blockquote>
   4407 </li>
   4408 </ol>
   4409 </blockquote>
   4410 ````````````````````````````````
   4411 
   4412 
   4413 
   4414 6.  **That's all.** Nothing that is not counted as a list item by rules
   4415     #1--5 counts as a [list item](#list-items).
   4416 
   4417 The rules for sublists follow from the general rules above.  A sublist
   4418 must be indented the same number of spaces a paragraph would need to be
   4419 in order to be included in the list item.
   4420 
   4421 So, in this case we need two spaces indent:
   4422 
   4423 ```````````````````````````````` example
   4424 - foo
   4425   - bar
   4426     - baz
   4427       - boo
   4428 .
   4429 <ul>
   4430 <li>foo
   4431 <ul>
   4432 <li>bar
   4433 <ul>
   4434 <li>baz
   4435 <ul>
   4436 <li>boo</li>
   4437 </ul>
   4438 </li>
   4439 </ul>
   4440 </li>
   4441 </ul>
   4442 </li>
   4443 </ul>
   4444 ````````````````````````````````
   4445 
   4446 
   4447 One is not enough:
   4448 
   4449 ```````````````````````````````` example
   4450 - foo
   4451  - bar
   4452   - baz
   4453    - boo
   4454 .
   4455 <ul>
   4456 <li>foo</li>
   4457 <li>bar</li>
   4458 <li>baz</li>
   4459 <li>boo</li>
   4460 </ul>
   4461 ````````````````````````````````
   4462 
   4463 
   4464 Here we need four, because the list marker is wider:
   4465 
   4466 ```````````````````````````````` example
   4467 10) foo
   4468     - bar
   4469 .
   4470 <ol start="10">
   4471 <li>foo
   4472 <ul>
   4473 <li>bar</li>
   4474 </ul>
   4475 </li>
   4476 </ol>
   4477 ````````````````````````````````
   4478 
   4479 
   4480 Three is not enough:
   4481 
   4482 ```````````````````````````````` example
   4483 10) foo
   4484    - bar
   4485 .
   4486 <ol start="10">
   4487 <li>foo</li>
   4488 </ol>
   4489 <ul>
   4490 <li>bar</li>
   4491 </ul>
   4492 ````````````````````````````````
   4493 
   4494 
   4495 A list may be the first block in a list item:
   4496 
   4497 ```````````````````````````````` example
   4498 - - foo
   4499 .
   4500 <ul>
   4501 <li>
   4502 <ul>
   4503 <li>foo</li>
   4504 </ul>
   4505 </li>
   4506 </ul>
   4507 ````````````````````````````````
   4508 
   4509 
   4510 ```````````````````````````````` example
   4511 1. - 2. foo
   4512 .
   4513 <ol>
   4514 <li>
   4515 <ul>
   4516 <li>
   4517 <ol start="2">
   4518 <li>foo</li>
   4519 </ol>
   4520 </li>
   4521 </ul>
   4522 </li>
   4523 </ol>
   4524 ````````````````````````````````
   4525 
   4526 
   4527 A list item can contain a heading:
   4528 
   4529 ```````````````````````````````` example
   4530 - # Foo
   4531 - Bar
   4532   ---
   4533   baz
   4534 .
   4535 <ul>
   4536 <li>
   4537 <h1>Foo</h1>
   4538 </li>
   4539 <li>
   4540 <h2>Bar</h2>
   4541 baz</li>
   4542 </ul>
   4543 ````````````````````````````````
   4544 
   4545 
   4546 ### Motivation
   4547 
   4548 John Gruber's Markdown spec says the following about list items:
   4549 
   4550 1. "List markers typically start at the left margin, but may be indented
   4551    by up to three spaces. List markers must be followed by one or more
   4552    spaces or a tab."
   4553 
   4554 2. "To make lists look nice, you can wrap items with hanging indents....
   4555    But if you don't want to, you don't have to."
   4556 
   4557 3. "List items may consist of multiple paragraphs. Each subsequent
   4558    paragraph in a list item must be indented by either 4 spaces or one
   4559    tab."
   4560 
   4561 4. "It looks nice if you indent every line of the subsequent paragraphs,
   4562    but here again, Markdown will allow you to be lazy."
   4563 
   4564 5. "To put a blockquote within a list item, the blockquote's `>`
   4565    delimiters need to be indented."
   4566 
   4567 6. "To put a code block within a list item, the code block needs to be
   4568    indented twice — 8 spaces or two tabs."
   4569 
   4570 These rules specify that a paragraph under a list item must be indented
   4571 four spaces (presumably, from the left margin, rather than the start of
   4572 the list marker, but this is not said), and that code under a list item
   4573 must be indented eight spaces instead of the usual four.  They also say
   4574 that a block quote must be indented, but not by how much; however, the
   4575 example given has four spaces indentation.  Although nothing is said
   4576 about other kinds of block-level content, it is certainly reasonable to
   4577 infer that *all* block elements under a list item, including other
   4578 lists, must be indented four spaces.  This principle has been called the
   4579 *four-space rule*.
   4580 
   4581 The four-space rule is clear and principled, and if the reference
   4582 implementation `Markdown.pl` had followed it, it probably would have
   4583 become the standard.  However, `Markdown.pl` allowed paragraphs and
   4584 sublists to start with only two spaces indentation, at least on the
   4585 outer level.  Worse, its behavior was inconsistent: a sublist of an
   4586 outer-level list needed two spaces indentation, but a sublist of this
   4587 sublist needed three spaces.  It is not surprising, then, that different
   4588 implementations of Markdown have developed very different rules for
   4589 determining what comes under a list item.  (Pandoc and python-Markdown,
   4590 for example, stuck with Gruber's syntax description and the four-space
   4591 rule, while discount, redcarpet, marked, PHP Markdown, and others
   4592 followed `Markdown.pl`'s behavior more closely.)
   4593 
   4594 Unfortunately, given the divergences between implementations, there
   4595 is no way to give a spec for list items that will be guaranteed not
   4596 to break any existing documents.  However, the spec given here should
   4597 correctly handle lists formatted with either the four-space rule or
   4598 the more forgiving `Markdown.pl` behavior, provided they are laid out
   4599 in a way that is natural for a human to read.
   4600 
   4601 The strategy here is to let the width and indentation of the list marker
   4602 determine the indentation necessary for blocks to fall under the list
   4603 item, rather than having a fixed and arbitrary number.  The writer can
   4604 think of the body of the list item as a unit which gets indented to the
   4605 right enough to fit the list marker (and any indentation on the list
   4606 marker).  (The laziness rule, #5, then allows continuation lines to be
   4607 unindented if needed.)
   4608 
   4609 This rule is superior, we claim, to any rule requiring a fixed level of
   4610 indentation from the margin.  The four-space rule is clear but
   4611 unnatural. It is quite unintuitive that
   4612 
   4613 ``` markdown
   4614 - foo
   4615 
   4616   bar
   4617 
   4618   - baz
   4619 ```
   4620 
   4621 should be parsed as two lists with an intervening paragraph,
   4622 
   4623 ``` html
   4624 <ul>
   4625 <li>foo</li>
   4626 </ul>
   4627 <p>bar</p>
   4628 <ul>
   4629 <li>baz</li>
   4630 </ul>
   4631 ```
   4632 
   4633 as the four-space rule demands, rather than a single list,
   4634 
   4635 ``` html
   4636 <ul>
   4637 <li>
   4638 <p>foo</p>
   4639 <p>bar</p>
   4640 <ul>
   4641 <li>baz</li>
   4642 </ul>
   4643 </li>
   4644 </ul>
   4645 ```
   4646 
   4647 The choice of four spaces is arbitrary.  It can be learned, but it is
   4648 not likely to be guessed, and it trips up beginners regularly.
   4649 
   4650 Would it help to adopt a two-space rule?  The problem is that such
   4651 a rule, together with the rule allowing 1--3 spaces indentation of the
   4652 initial list marker, allows text that is indented *less than* the
   4653 original list marker to be included in the list item. For example,
   4654 `Markdown.pl` parses
   4655 
   4656 ``` markdown
   4657    - one
   4658 
   4659   two
   4660 ```
   4661 
   4662 as a single list item, with `two` a continuation paragraph:
   4663 
   4664 ``` html
   4665 <ul>
   4666 <li>
   4667 <p>one</p>
   4668 <p>two</p>
   4669 </li>
   4670 </ul>
   4671 ```
   4672 
   4673 and similarly
   4674 
   4675 ``` markdown
   4676 >   - one
   4677 >
   4678 >  two
   4679 ```
   4680 
   4681 as
   4682 
   4683 ``` html
   4684 <blockquote>
   4685 <ul>
   4686 <li>
   4687 <p>one</p>
   4688 <p>two</p>
   4689 </li>
   4690 </ul>
   4691 </blockquote>
   4692 ```
   4693 
   4694 This is extremely unintuitive.
   4695 
   4696 Rather than requiring a fixed indent from the margin, we could require
   4697 a fixed indent (say, two spaces, or even one space) from the list marker (which
   4698 may itself be indented).  This proposal would remove the last anomaly
   4699 discussed.  Unlike the spec presented above, it would count the following
   4700 as a list item with a subparagraph, even though the paragraph `bar`
   4701 is not indented as far as the first paragraph `foo`:
   4702 
   4703 ``` markdown
   4704  10. foo
   4705 
   4706    bar  
   4707 ```
   4708 
   4709 Arguably this text does read like a list item with `bar` as a subparagraph,
   4710 which may count in favor of the proposal.  However, on this proposal indented
   4711 code would have to be indented six spaces after the list marker.  And this
   4712 would break a lot of existing Markdown, which has the pattern:
   4713 
   4714 ``` markdown
   4715 1.  foo
   4716 
   4717         indented code
   4718 ```
   4719 
   4720 where the code is indented eight spaces.  The spec above, by contrast, will
   4721 parse this text as expected, since the code block's indentation is measured
   4722 from the beginning of `foo`.
   4723 
   4724 The one case that needs special treatment is a list item that *starts*
   4725 with indented code.  How much indentation is required in that case, since
   4726 we don't have a "first paragraph" to measure from?  Rule #2 simply stipulates
   4727 that in such cases, we require one space indentation from the list marker
   4728 (and then the normal four spaces for the indented code).  This will match the
   4729 four-space rule in cases where the list marker plus its initial indentation
   4730 takes four spaces (a common case), but diverge in other cases.
   4731 
   4732 ## Lists
   4733 
   4734 A [list](@) is a sequence of one or more
   4735 list items [of the same type].  The list items
   4736 may be separated by any number of blank lines.
   4737 
   4738 Two list items are [of the same type](@)
   4739 if they begin with a [list marker] of the same type.
   4740 Two list markers are of the
   4741 same type if (a) they are bullet list markers using the same character
   4742 (`-`, `+`, or `*`) or (b) they are ordered list numbers with the same
   4743 delimiter (either `.` or `)`).
   4744 
   4745 A list is an [ordered list](@)
   4746 if its constituent list items begin with
   4747 [ordered list markers], and a
   4748 [bullet list](@) if its constituent list
   4749 items begin with [bullet list markers].
   4750 
   4751 The [start number](@)
   4752 of an [ordered list] is determined by the list number of
   4753 its initial list item.  The numbers of subsequent list items are
   4754 disregarded.
   4755 
   4756 A list is [loose](@) if any of its constituent
   4757 list items are separated by blank lines, or if any of its constituent
   4758 list items directly contain two block-level elements with a blank line
   4759 between them.  Otherwise a list is [tight](@).
   4760 (The difference in HTML output is that paragraphs in a loose list are
   4761 wrapped in `<p>` tags, while paragraphs in a tight list are not.)
   4762 
   4763 Changing the bullet or ordered list delimiter starts a new list:
   4764 
   4765 ```````````````````````````````` example
   4766 - foo
   4767 - bar
   4768 + baz
   4769 .
   4770 <ul>
   4771 <li>foo</li>
   4772 <li>bar</li>
   4773 </ul>
   4774 <ul>
   4775 <li>baz</li>
   4776 </ul>
   4777 ````````````````````````````````
   4778 
   4779 
   4780 ```````````````````````````````` example
   4781 1. foo
   4782 2. bar
   4783 3) baz
   4784 .
   4785 <ol>
   4786 <li>foo</li>
   4787 <li>bar</li>
   4788 </ol>
   4789 <ol start="3">
   4790 <li>baz</li>
   4791 </ol>
   4792 ````````````````````````````````
   4793 
   4794 
   4795 In CommonMark, a list can interrupt a paragraph. That is,
   4796 no blank line is needed to separate a paragraph from a following
   4797 list:
   4798 
   4799 ```````````````````````````````` example
   4800 Foo
   4801 - bar
   4802 - baz
   4803 .
   4804 <p>Foo</p>
   4805 <ul>
   4806 <li>bar</li>
   4807 <li>baz</li>
   4808 </ul>
   4809 ````````````````````````````````
   4810 
   4811 `Markdown.pl` does not allow this, through fear of triggering a list
   4812 via a numeral in a hard-wrapped line:
   4813 
   4814 ``` markdown
   4815 The number of windows in my house is
   4816 14.  The number of doors is 6.
   4817 ```
   4818 
   4819 Oddly, though, `Markdown.pl` *does* allow a blockquote to
   4820 interrupt a paragraph, even though the same considerations might
   4821 apply.
   4822 
   4823 In CommonMark, we do allow lists to interrupt paragraphs, for
   4824 two reasons.  First, it is natural and not uncommon for people
   4825 to start lists without blank lines:
   4826 
   4827 ``` markdown
   4828 I need to buy
   4829 - new shoes
   4830 - a coat
   4831 - a plane ticket
   4832 ```
   4833 
   4834 Second, we are attracted to a
   4835 
   4836 > [principle of uniformity](@):
   4837 > if a chunk of text has a certain
   4838 > meaning, it will continue to have the same meaning when put into a
   4839 > container block (such as a list item or blockquote).
   4840 
   4841 (Indeed, the spec for [list items] and [block quotes] presupposes
   4842 this principle.) This principle implies that if
   4843 
   4844 ``` markdown
   4845   * I need to buy
   4846     - new shoes
   4847     - a coat
   4848     - a plane ticket
   4849 ```
   4850 
   4851 is a list item containing a paragraph followed by a nested sublist,
   4852 as all Markdown implementations agree it is (though the paragraph
   4853 may be rendered without `<p>` tags, since the list is "tight"),
   4854 then
   4855 
   4856 ``` markdown
   4857 I need to buy
   4858 - new shoes
   4859 - a coat
   4860 - a plane ticket
   4861 ```
   4862 
   4863 by itself should be a paragraph followed by a nested sublist.
   4864 
   4865 Since it is well established Markdown practice to allow lists to
   4866 interrupt paragraphs inside list items, the [principle of
   4867 uniformity] requires us to allow this outside list items as
   4868 well.  ([reStructuredText](http://docutils.sourceforge.net/rst.html)
   4869 takes a different approach, requiring blank lines before lists
   4870 even inside other list items.)
   4871 
   4872 In order to solve of unwanted lists in paragraphs with
   4873 hard-wrapped numerals, we allow only lists starting with `1` to
   4874 interrupt paragraphs.  Thus,
   4875 
   4876 ```````````````````````````````` example
   4877 The number of windows in my house is
   4878 14.  The number of doors is 6.
   4879 .
   4880 <p>The number of windows in my house is
   4881 14.  The number of doors is 6.</p>
   4882 ````````````````````````````````
   4883 
   4884 We may still get an unintended result in cases like
   4885 
   4886 ```````````````````````````````` example
   4887 The number of windows in my house is
   4888 1.  The number of doors is 6.
   4889 .
   4890 <p>The number of windows in my house is</p>
   4891 <ol>
   4892 <li>The number of doors is 6.</li>
   4893 </ol>
   4894 ````````````````````````````````
   4895 
   4896 but this rule should prevent most spurious list captures.
   4897 
   4898 There can be any number of blank lines between items:
   4899 
   4900 ```````````````````````````````` example
   4901 - foo
   4902 
   4903 - bar
   4904 
   4905 
   4906 - baz
   4907 .
   4908 <ul>
   4909 <li>
   4910 <p>foo</p>
   4911 </li>
   4912 <li>
   4913 <p>bar</p>
   4914 </li>
   4915 <li>
   4916 <p>baz</p>
   4917 </li>
   4918 </ul>
   4919 ````````````````````````````````
   4920 
   4921 ```````````````````````````````` example
   4922 - foo
   4923   - bar
   4924     - baz
   4925 
   4926 
   4927       bim
   4928 .
   4929 <ul>
   4930 <li>foo
   4931 <ul>
   4932 <li>bar
   4933 <ul>
   4934 <li>
   4935 <p>baz</p>
   4936 <p>bim</p>
   4937 </li>
   4938 </ul>
   4939 </li>
   4940 </ul>
   4941 </li>
   4942 </ul>
   4943 ````````````````````````````````
   4944 
   4945 
   4946 To separate consecutive lists of the same type, or to separate a
   4947 list from an indented code block that would otherwise be parsed
   4948 as a subparagraph of the final list item, you can insert a blank HTML
   4949 comment:
   4950 
   4951 ```````````````````````````````` example
   4952 - foo
   4953 - bar
   4954 
   4955 <!-- -->
   4956 
   4957 - baz
   4958 - bim
   4959 .
   4960 <ul>
   4961 <li>foo</li>
   4962 <li>bar</li>
   4963 </ul>
   4964 <!-- -->
   4965 <ul>
   4966 <li>baz</li>
   4967 <li>bim</li>
   4968 </ul>
   4969 ````````````````````````````````
   4970 
   4971 
   4972 ```````````````````````````````` example
   4973 -   foo
   4974 
   4975     notcode
   4976 
   4977 -   foo
   4978 
   4979 <!-- -->
   4980 
   4981     code
   4982 .
   4983 <ul>
   4984 <li>
   4985 <p>foo</p>
   4986 <p>notcode</p>
   4987 </li>
   4988 <li>
   4989 <p>foo</p>
   4990 </li>
   4991 </ul>
   4992 <!-- -->
   4993 <pre><code>code
   4994 </code></pre>
   4995 ````````````````````````````````
   4996 
   4997 
   4998 List items need not be indented to the same level.  The following
   4999 list items will be treated as items at the same list level,
   5000 since none is indented enough to belong to the previous list
   5001 item:
   5002 
   5003 ```````````````````````````````` example
   5004 - a
   5005  - b
   5006   - c
   5007    - d
   5008     - e
   5009    - f
   5010   - g
   5011  - h
   5012 - i
   5013 .
   5014 <ul>
   5015 <li>a</li>
   5016 <li>b</li>
   5017 <li>c</li>
   5018 <li>d</li>
   5019 <li>e</li>
   5020 <li>f</li>
   5021 <li>g</li>
   5022 <li>h</li>
   5023 <li>i</li>
   5024 </ul>
   5025 ````````````````````````````````
   5026 
   5027 
   5028 ```````````````````````````````` example
   5029 1. a
   5030 
   5031   2. b
   5032 
   5033     3. c
   5034 .
   5035 <ol>
   5036 <li>
   5037 <p>a</p>
   5038 </li>
   5039 <li>
   5040 <p>b</p>
   5041 </li>
   5042 <li>
   5043 <p>c</p>
   5044 </li>
   5045 </ol>
   5046 ````````````````````````````````
   5047 
   5048 
   5049 This is a loose list, because there is a blank line between
   5050 two of the list items:
   5051 
   5052 ```````````````````````````````` example
   5053 - a
   5054 - b
   5055 
   5056 - c
   5057 .
   5058 <ul>
   5059 <li>
   5060 <p>a</p>
   5061 </li>
   5062 <li>
   5063 <p>b</p>
   5064 </li>
   5065 <li>
   5066 <p>c</p>
   5067 </li>
   5068 </ul>
   5069 ````````````````````````````````
   5070 
   5071 
   5072 So is this, with a empty second item:
   5073 
   5074 ```````````````````````````````` example
   5075 * a
   5076 *
   5077 
   5078 * c
   5079 .
   5080 <ul>
   5081 <li>
   5082 <p>a</p>
   5083 </li>
   5084 <li></li>
   5085 <li>
   5086 <p>c</p>
   5087 </li>
   5088 </ul>
   5089 ````````````````````````````````
   5090 
   5091 
   5092 These are loose lists, even though there is no space between the items,
   5093 because one of the items directly contains two block-level elements
   5094 with a blank line between them:
   5095 
   5096 ```````````````````````````````` example
   5097 - a
   5098 - b
   5099 
   5100   c
   5101 - d
   5102 .
   5103 <ul>
   5104 <li>
   5105 <p>a</p>
   5106 </li>
   5107 <li>
   5108 <p>b</p>
   5109 <p>c</p>
   5110 </li>
   5111 <li>
   5112 <p>d</p>
   5113 </li>
   5114 </ul>
   5115 ````````````````````````````````
   5116 
   5117 
   5118 ```````````````````````````````` example
   5119 - a
   5120 - b
   5121 
   5122   [ref]: /url
   5123 - d
   5124 .
   5125 <ul>
   5126 <li>
   5127 <p>a</p>
   5128 </li>
   5129 <li>
   5130 <p>b</p>
   5131 </li>
   5132 <li>
   5133 <p>d</p>
   5134 </li>
   5135 </ul>
   5136 ````````````````````````````````
   5137 
   5138 
   5139 This is a tight list, because the blank lines are in a code block:
   5140 
   5141 ```````````````````````````````` example
   5142 - a
   5143 - ```
   5144   b
   5145 
   5146 
   5147   ```
   5148 - c
   5149 .
   5150 <ul>
   5151 <li>a</li>
   5152 <li>
   5153 <pre><code>b
   5154 
   5155 
   5156 </code></pre>
   5157 </li>
   5158 <li>c</li>
   5159 </ul>
   5160 ````````````````````````````````
   5161 
   5162 
   5163 This is a tight list, because the blank line is between two
   5164 paragraphs of a sublist.  So the sublist is loose while
   5165 the outer list is tight:
   5166 
   5167 ```````````````````````````````` example
   5168 - a
   5169   - b
   5170 
   5171     c
   5172 - d
   5173 .
   5174 <ul>
   5175 <li>a
   5176 <ul>
   5177 <li>
   5178 <p>b</p>
   5179 <p>c</p>
   5180 </li>
   5181 </ul>
   5182 </li>
   5183 <li>d</li>
   5184 </ul>
   5185 ````````````````````````````````
   5186 
   5187 
   5188 This is a tight list, because the blank line is inside the
   5189 block quote:
   5190 
   5191 ```````````````````````````````` example
   5192 * a
   5193   > b
   5194   >
   5195 * c
   5196 .
   5197 <ul>
   5198 <li>a
   5199 <blockquote>
   5200 <p>b</p>
   5201 </blockquote>
   5202 </li>
   5203 <li>c</li>
   5204 </ul>
   5205 ````````````````````````````````
   5206 
   5207 
   5208 This list is tight, because the consecutive block elements
   5209 are not separated by blank lines:
   5210 
   5211 ```````````````````````````````` example
   5212 - a
   5213   > b
   5214   ```
   5215   c
   5216   ```
   5217 - d
   5218 .
   5219 <ul>
   5220 <li>a
   5221 <blockquote>
   5222 <p>b</p>
   5223 </blockquote>
   5224 <pre><code>c
   5225 </code></pre>
   5226 </li>
   5227 <li>d</li>
   5228 </ul>
   5229 ````````````````````````````````
   5230 
   5231 
   5232 A single-paragraph list is tight:
   5233 
   5234 ```````````````````````````````` example
   5235 - a
   5236 .
   5237 <ul>
   5238 <li>a</li>
   5239 </ul>
   5240 ````````````````````````````````
   5241 
   5242 
   5243 ```````````````````````````````` example
   5244 - a
   5245   - b
   5246 .
   5247 <ul>
   5248 <li>a
   5249 <ul>
   5250 <li>b</li>
   5251 </ul>
   5252 </li>
   5253 </ul>
   5254 ````````````````````````````````
   5255 
   5256 
   5257 This list is loose, because of the blank line between the
   5258 two block elements in the list item:
   5259 
   5260 ```````````````````````````````` example
   5261 1. ```
   5262    foo
   5263    ```
   5264 
   5265    bar
   5266 .
   5267 <ol>
   5268 <li>
   5269 <pre><code>foo
   5270 </code></pre>
   5271 <p>bar</p>
   5272 </li>
   5273 </ol>
   5274 ````````````````````````````````
   5275 
   5276 
   5277 Here the outer list is loose, the inner list tight:
   5278 
   5279 ```````````````````````````````` example
   5280 * foo
   5281   * bar
   5282 
   5283   baz
   5284 .
   5285 <ul>
   5286 <li>
   5287 <p>foo</p>
   5288 <ul>
   5289 <li>bar</li>
   5290 </ul>
   5291 <p>baz</p>
   5292 </li>
   5293 </ul>
   5294 ````````````````````````````````
   5295 
   5296 
   5297 ```````````````````````````````` example
   5298 - a
   5299   - b
   5300   - c
   5301 
   5302 - d
   5303   - e
   5304   - f
   5305 .
   5306 <ul>
   5307 <li>
   5308 <p>a</p>
   5309 <ul>
   5310 <li>b</li>
   5311 <li>c</li>
   5312 </ul>
   5313 </li>
   5314 <li>
   5315 <p>d</p>
   5316 <ul>
   5317 <li>e</li>
   5318 <li>f</li>
   5319 </ul>
   5320 </li>
   5321 </ul>
   5322 ````````````````````````````````
   5323 
   5324 
   5325 # Inlines
   5326 
   5327 Inlines are parsed sequentially from the beginning of the character
   5328 stream to the end (left to right, in left-to-right languages).
   5329 Thus, for example, in
   5330 
   5331 ```````````````````````````````` example
   5332 `hi`lo`
   5333 .
   5334 <p><code>hi</code>lo`</p>
   5335 ````````````````````````````````
   5336 
   5337 
   5338 `hi` is parsed as code, leaving the backtick at the end as a literal
   5339 backtick.
   5340 
   5341 ## Backslash escapes
   5342 
   5343 Any ASCII punctuation character may be backslash-escaped:
   5344 
   5345 ```````````````````````````````` example
   5346 \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^\_\`\{\|\}\~
   5347 .
   5348 <p>!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\]^_`{|}~</p>
   5349 ````````````````````````````````
   5350 
   5351 
   5352 Backslashes before other characters are treated as literal
   5353 backslashes:
   5354 
   5355 ```````````````````````````````` example
   5356 \→\A\a\ \3\φ\«
   5357 .
   5358 <p>\→\A\a\ \3\φ\«</p>
   5359 ````````````````````````````````
   5360 
   5361 
   5362 Escaped characters are treated as regular characters and do
   5363 not have their usual Markdown meanings:
   5364 
   5365 ```````````````````````````````` example
   5366 \*not emphasized*
   5367 \<br/> not a tag
   5368 \[not a link](/foo)
   5369 \`not code`
   5370 1\. not a list
   5371 \* not a list
   5372 \# not a heading
   5373 \[foo]: /url "not a reference"
   5374 .
   5375 <p>*not emphasized*
   5376 &lt;br/&gt; not a tag
   5377 [not a link](/foo)
   5378 `not code`
   5379 1. not a list
   5380 * not a list
   5381 # not a heading
   5382 [foo]: /url &quot;not a reference&quot;</p>
   5383 ````````````````````````````````
   5384 
   5385 
   5386 If a backslash is itself escaped, the following character is not:
   5387 
   5388 ```````````````````````````````` example
   5389 \\*emphasis*
   5390 .
   5391 <p>\<em>emphasis</em></p>
   5392 ````````````````````````````````
   5393 
   5394 
   5395 A backslash at the end of the line is a [hard line break]:
   5396 
   5397 ```````````````````````````````` example
   5398 foo\
   5399 bar
   5400 .
   5401 <p>foo<br />
   5402 bar</p>
   5403 ````````````````````````````````
   5404 
   5405 
   5406 Backslash escapes do not work in code blocks, code spans, autolinks, or
   5407 raw HTML:
   5408 
   5409 ```````````````````````````````` example
   5410 `` \[\` ``
   5411 .
   5412 <p><code>\[\`</code></p>
   5413 ````````````````````````````````
   5414 
   5415 
   5416 ```````````````````````````````` example
   5417     \[\]
   5418 .
   5419 <pre><code>\[\]
   5420 </code></pre>
   5421 ````````````````````````````````
   5422 
   5423 
   5424 ```````````````````````````````` example
   5425 ~~~
   5426 \[\]
   5427 ~~~
   5428 .
   5429 <pre><code>\[\]
   5430 </code></pre>
   5431 ````````````````````````````````
   5432 
   5433 
   5434 ```````````````````````````````` example
   5435 <http://example.com?find=\*>
   5436 .
   5437 <p><a href="http://example.com?find=%5C*">http://example.com?find=\*</a></p>
   5438 ````````````````````````````````
   5439 
   5440 
   5441 ```````````````````````````````` example
   5442 <a href="/bar\/)">
   5443 .
   5444 <a href="/bar\/)">
   5445 ````````````````````````````````
   5446 
   5447 
   5448 But they work in all other contexts, including URLs and link titles,
   5449 link references, and [info strings] in [fenced code blocks]:
   5450 
   5451 ```````````````````````````````` example
   5452 [foo](/bar\* "ti\*tle")
   5453 .
   5454 <p><a href="/bar*" title="ti*tle">foo</a></p>
   5455 ````````````````````````````````
   5456 
   5457 
   5458 ```````````````````````````````` example
   5459 [foo]
   5460 
   5461 [foo]: /bar\* "ti\*tle"
   5462 .
   5463 <p><a href="/bar*" title="ti*tle">foo</a></p>
   5464 ````````````````````````````````
   5465 
   5466 
   5467 ```````````````````````````````` example
   5468 ``` foo\+bar
   5469 foo
   5470 ```
   5471 .
   5472 <pre><code class="language-foo+bar">foo
   5473 </code></pre>
   5474 ````````````````````````````````
   5475 
   5476 
   5477 
   5478 ## Entity and numeric character references
   5479 
   5480 All valid HTML entity references and numeric character
   5481 references, except those occuring in code blocks and code spans,
   5482 are recognized as such and treated as equivalent to the
   5483 corresponding Unicode characters.  Conforming CommonMark parsers
   5484 need not store information about whether a particular character
   5485 was represented in the source using a Unicode character or
   5486 an entity reference.
   5487 
   5488 [Entity references](@) consist of `&` + any of the valid
   5489 HTML5 entity names + `;`. The
   5490 document <https://html.spec.whatwg.org/multipage/entities.json>
   5491 is used as an authoritative source for the valid entity
   5492 references and their corresponding code points.
   5493 
   5494 ```````````````````````````````` example
   5495 &nbsp; &amp; &copy; &AElig; &Dcaron;
   5496 &frac34; &HilbertSpace; &DifferentialD;
   5497 &ClockwiseContourIntegral; &ngE;
   5498 .
   5499 <p>  &amp; © Æ Ď
   5500 ¾ ℋ ⅆ
   5501 ∲ ≧̸</p>
   5502 ````````````````````````````````
   5503 
   5504 
   5505 [Decimal numeric character
   5506 references](@)
   5507 consist of `&#` + a string of 1--8 arabic digits + `;`. A
   5508 numeric character reference is parsed as the corresponding
   5509 Unicode character. Invalid Unicode code points will be replaced by
   5510 the REPLACEMENT CHARACTER (`U+FFFD`).  For security reasons,
   5511 the code point `U+0000` will also be replaced by `U+FFFD`.
   5512 
   5513 ```````````````````````````````` example
   5514 &#35; &#1234; &#992; &#98765432; &#0;
   5515 .
   5516 <p># Ӓ Ϡ � �</p>
   5517 ````````````````````````````````
   5518 
   5519 
   5520 [Hexadecimal numeric character
   5521 references](@) consist of `&#` +
   5522 either `X` or `x` + a string of 1-8 hexadecimal digits + `;`.
   5523 They too are parsed as the corresponding Unicode character (this
   5524 time specified with a hexadecimal numeral instead of decimal).
   5525 
   5526 ```````````````````````````````` example
   5527 &#X22; &#XD06; &#xcab;
   5528 .
   5529 <p>&quot; ആ ಫ</p>
   5530 ````````````````````````````````
   5531 
   5532 
   5533 Here are some nonentities:
   5534 
   5535 ```````````````````````````````` example
   5536 &nbsp &x; &#; &#x;
   5537 &ThisIsNotDefined; &hi?;
   5538 .
   5539 <p>&amp;nbsp &amp;x; &amp;#; &amp;#x;
   5540 &amp;ThisIsNotDefined; &amp;hi?;</p>
   5541 ````````````````````````````````
   5542 
   5543 
   5544 Although HTML5 does accept some entity references
   5545 without a trailing semicolon (such as `&copy`), these are not
   5546 recognized here, because it makes the grammar too ambiguous:
   5547 
   5548 ```````````````````````````````` example
   5549 &copy
   5550 .
   5551 <p>&amp;copy</p>
   5552 ````````````````````````````````
   5553 
   5554 
   5555 Strings that are not on the list of HTML5 named entities are not
   5556 recognized as entity references either:
   5557 
   5558 ```````````````````````````````` example
   5559 &MadeUpEntity;
   5560 .
   5561 <p>&amp;MadeUpEntity;</p>
   5562 ````````````````````````````````
   5563 
   5564 
   5565 Entity and numeric character references are recognized in any
   5566 context besides code spans or code blocks, including
   5567 URLs, [link titles], and [fenced code block][] [info strings]:
   5568 
   5569 ```````````````````````````````` example
   5570 <a href="&ouml;&ouml;.html">
   5571 .
   5572 <a href="&ouml;&ouml;.html">
   5573 ````````````````````````````````
   5574 
   5575 
   5576 ```````````````````````````````` example
   5577 [foo](/f&ouml;&ouml; "f&ouml;&ouml;")
   5578 .
   5579 <p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>
   5580 ````````````````````````````````
   5581 
   5582 
   5583 ```````````````````````````````` example
   5584 [foo]
   5585 
   5586 [foo]: /f&ouml;&ouml; "f&ouml;&ouml;"
   5587 .
   5588 <p><a href="/f%C3%B6%C3%B6" title="föö">foo</a></p>
   5589 ````````````````````````````````
   5590 
   5591 
   5592 ```````````````````````````````` example
   5593 ``` f&ouml;&ouml;
   5594 foo
   5595 ```
   5596 .
   5597 <pre><code class="language-föö">foo
   5598 </code></pre>
   5599 ````````````````````````````````
   5600 
   5601 
   5602 Entity and numeric character references are treated as literal
   5603 text in code spans and code blocks:
   5604 
   5605 ```````````````````````````````` example
   5606 `f&ouml;&ouml;`
   5607 .
   5608 <p><code>f&amp;ouml;&amp;ouml;</code></p>
   5609 ````````````````````````````````
   5610 
   5611 
   5612 ```````````````````````````````` example
   5613     f&ouml;f&ouml;
   5614 .
   5615 <pre><code>f&amp;ouml;f&amp;ouml;
   5616 </code></pre>
   5617 ````````````````````````````````
   5618 
   5619 
   5620 ## Code spans
   5621 
   5622 A [backtick string](@)
   5623 is a string of one or more backtick characters (`` ` ``) that is neither
   5624 preceded nor followed by a backtick.
   5625 
   5626 A [code span](@) begins with a backtick string and ends with
   5627 a backtick string of equal length.  The contents of the code span are
   5628 the characters between the two backtick strings, with leading and
   5629 trailing spaces and [line endings] removed, and
   5630 [whitespace] collapsed to single spaces.
   5631 
   5632 This is a simple code span:
   5633 
   5634 ```````````````````````````````` example
   5635 `foo`
   5636 .
   5637 <p><code>foo</code></p>
   5638 ````````````````````````````````
   5639 
   5640 
   5641 Here two backticks are used, because the code contains a backtick.
   5642 This example also illustrates stripping of leading and trailing spaces:
   5643 
   5644 ```````````````````````````````` example
   5645 `` foo ` bar  ``
   5646 .
   5647 <p><code>foo ` bar</code></p>
   5648 ````````````````````````````````
   5649 
   5650 
   5651 This example shows the motivation for stripping leading and trailing
   5652 spaces:
   5653 
   5654 ```````````````````````````````` example
   5655 ` `` `
   5656 .
   5657 <p><code>``</code></p>
   5658 ````````````````````````````````
   5659 
   5660 
   5661 [Line endings] are treated like spaces:
   5662 
   5663 ```````````````````````````````` example
   5664 ``
   5665 foo
   5666 ``
   5667 .
   5668 <p><code>foo</code></p>
   5669 ````````````````````````````````
   5670 
   5671 
   5672 Interior spaces and [line endings] are collapsed into
   5673 single spaces, just as they would be by a browser:
   5674 
   5675 ```````````````````````````````` example
   5676 `foo   bar
   5677   baz`
   5678 .
   5679 <p><code>foo bar baz</code></p>
   5680 ````````````````````````````````
   5681 
   5682 
   5683 Not all [Unicode whitespace] (for instance, non-breaking space) is
   5684 collapsed, however:
   5685 
   5686 ```````````````````````````````` example
   5687 `a  b`
   5688 .
   5689 <p><code>a  b</code></p>
   5690 ````````````````````````````````
   5691 
   5692 
   5693 Q: Why not just leave the spaces, since browsers will collapse them
   5694 anyway?  A:  Because we might be targeting a non-HTML format, and we
   5695 shouldn't rely on HTML-specific rendering assumptions.
   5696 
   5697 (Existing implementations differ in their treatment of internal
   5698 spaces and [line endings].  Some, including `Markdown.pl` and
   5699 `showdown`, convert an internal [line ending] into a
   5700 `<br />` tag.  But this makes things difficult for those who like to
   5701 hard-wrap their paragraphs, since a line break in the midst of a code
   5702 span will cause an unintended line break in the output.  Others just
   5703 leave internal spaces as they are, which is fine if only HTML is being
   5704 targeted.)
   5705 
   5706 ```````````````````````````````` example
   5707 `foo `` bar`
   5708 .
   5709 <p><code>foo `` bar</code></p>
   5710 ````````````````````````````````
   5711 
   5712 
   5713 Note that backslash escapes do not work in code spans. All backslashes
   5714 are treated literally:
   5715 
   5716 ```````````````````````````````` example
   5717 `foo\`bar`
   5718 .
   5719 <p><code>foo\</code>bar`</p>
   5720 ````````````````````````````````
   5721 
   5722 
   5723 Backslash escapes are never needed, because one can always choose a
   5724 string of *n* backtick characters as delimiters, where the code does
   5725 not contain any strings of exactly *n* backtick characters.
   5726 
   5727 Code span backticks have higher precedence than any other inline
   5728 constructs except HTML tags and autolinks.  Thus, for example, this is
   5729 not parsed as emphasized text, since the second `*` is part of a code
   5730 span:
   5731 
   5732 ```````````````````````````````` example
   5733 *foo`*`
   5734 .
   5735 <p>*foo<code>*</code></p>
   5736 ````````````````````````````````
   5737 
   5738 
   5739 And this is not parsed as a link:
   5740 
   5741 ```````````````````````````````` example
   5742 [not a `link](/foo`)
   5743 .
   5744 <p>[not a <code>link](/foo</code>)</p>
   5745 ````````````````````````````````
   5746 
   5747 
   5748 Code spans, HTML tags, and autolinks have the same precedence.
   5749 Thus, this is code:
   5750 
   5751 ```````````````````````````````` example
   5752 `<a href="`">`
   5753 .
   5754 <p><code>&lt;a href=&quot;</code>&quot;&gt;`</p>
   5755 ````````````````````````````````
   5756 
   5757 
   5758 But this is an HTML tag:
   5759 
   5760 ```````````````````````````````` example
   5761 <a href="`">`
   5762 .
   5763 <p><a href="`">`</p>
   5764 ````````````````````````````````
   5765 
   5766 
   5767 And this is code:
   5768 
   5769 ```````````````````````````````` example
   5770 `<http://foo.bar.`baz>`
   5771 .
   5772 <p><code>&lt;http://foo.bar.</code>baz&gt;`</p>
   5773 ````````````````````````````````
   5774 
   5775 
   5776 But this is an autolink:
   5777 
   5778 ```````````````````````````````` example
   5779 <http://foo.bar.`baz>`
   5780 .
   5781 <p><a href="http://foo.bar.%60baz">http://foo.bar.`baz</a>`</p>
   5782 ````````````````````````````````
   5783 
   5784 
   5785 When a backtick string is not closed by a matching backtick string,
   5786 we just have literal backticks:
   5787 
   5788 ```````````````````````````````` example
   5789 ```foo``
   5790 .
   5791 <p>```foo``</p>
   5792 ````````````````````````````````
   5793 
   5794 
   5795 ```````````````````````````````` example
   5796 `foo
   5797 .
   5798 <p>`foo</p>
   5799 ````````````````````````````````
   5800 
   5801 The following case also illustrates the need for opening and
   5802 closing backtick strings to be equal in length:
   5803 
   5804 ```````````````````````````````` example
   5805 `foo``bar``
   5806 .
   5807 <p>`foo<code>bar</code></p>
   5808 ````````````````````````````````
   5809 
   5810 
   5811 ## Emphasis and strong emphasis
   5812 
   5813 John Gruber's original [Markdown syntax
   5814 description](http://daringfireball.net/projects/markdown/syntax#em) says:
   5815 
   5816 > Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
   5817 > emphasis. Text wrapped with one `*` or `_` will be wrapped with an HTML
   5818 > `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML `<strong>`
   5819 > tag.
   5820 
   5821 This is enough for most users, but these rules leave much undecided,
   5822 especially when it comes to nested emphasis.  The original
   5823 `Markdown.pl` test suite makes it clear that triple `***` and
   5824 `___` delimiters can be used for strong emphasis, and most
   5825 implementations have also allowed the following patterns:
   5826 
   5827 ``` markdown
   5828 ***strong emph***
   5829 ***strong** in emph*
   5830 ***emph* in strong**
   5831 **in strong *emph***
   5832 *in emph **strong***
   5833 ```
   5834 
   5835 The following patterns are less widely supported, but the intent
   5836 is clear and they are useful (especially in contexts like bibliography
   5837 entries):
   5838 
   5839 ``` markdown
   5840 *emph *with emph* in it*
   5841 **strong **with strong** in it**
   5842 ```
   5843 
   5844 Many implementations have also restricted intraword emphasis to
   5845 the `*` forms, to avoid unwanted emphasis in words containing
   5846 internal underscores.  (It is best practice to put these in code
   5847 spans, but users often do not.)
   5848 
   5849 ``` markdown
   5850 internal emphasis: foo*bar*baz
   5851 no emphasis: foo_bar_baz
   5852 ```
   5853 
   5854 The rules given below capture all of these patterns, while allowing
   5855 for efficient parsing strategies that do not backtrack.
   5856 
   5857 First, some definitions.  A [delimiter run](@) is either
   5858 a sequence of one or more `*` characters that is not preceded or
   5859 followed by a `*` character, or a sequence of one or more `_`
   5860 characters that is not preceded or followed by a `_` character.
   5861 
   5862 A [left-flanking delimiter run](@) is
   5863 a [delimiter run] that is (a) not followed by [Unicode whitespace],
   5864 and (b) not followed by a [punctuation character], or
   5865 preceded by [Unicode whitespace] or a [punctuation character].
   5866 For purposes of this definition, the beginning and the end of
   5867 the line count as Unicode whitespace.
   5868 
   5869 A [right-flanking delimiter run](@) is
   5870 a [delimiter run] that is (a) not preceded by [Unicode whitespace],
   5871 and (b) not preceded by a [punctuation character], or
   5872 followed by [Unicode whitespace] or a [punctuation character].
   5873 For purposes of this definition, the beginning and the end of
   5874 the line count as Unicode whitespace.
   5875 
   5876 Here are some examples of delimiter runs.
   5877 
   5878   - left-flanking but not right-flanking:
   5879 
   5880     ```
   5881     ***abc
   5882       _abc
   5883     **"abc"
   5884      _"abc"
   5885     ```
   5886 
   5887   - right-flanking but not left-flanking:
   5888 
   5889     ```
   5890      abc***
   5891      abc_
   5892     "abc"**
   5893     "abc"_
   5894     ```
   5895 
   5896   - Both left and right-flanking:
   5897 
   5898     ```
   5899      abc***def
   5900     "abc"_"def"
   5901     ```
   5902 
   5903   - Neither left nor right-flanking:
   5904 
   5905     ```
   5906     abc *** def
   5907     a _ b
   5908     ```
   5909 
   5910 (The idea of distinguishing left-flanking and right-flanking
   5911 delimiter runs based on the character before and the character
   5912 after comes from Roopesh Chander's
   5913 [vfmd](http://www.vfmd.org/vfmd-spec/specification/#procedure-for-identifying-emphasis-tags).
   5914 vfmd uses the terminology "emphasis indicator string" instead of "delimiter
   5915 run," and its rules for distinguishing left- and right-flanking runs
   5916 are a bit more complex than the ones given here.)
   5917 
   5918 The following rules define emphasis and strong emphasis:
   5919 
   5920 1.  A single `*` character [can open emphasis](@)
   5921     iff (if and only if) it is part of a [left-flanking delimiter run].
   5922 
   5923 2.  A single `_` character [can open emphasis] iff
   5924     it is part of a [left-flanking delimiter run]
   5925     and either (a) not part of a [right-flanking delimiter run]
   5926     or (b) part of a [right-flanking delimiter run]
   5927     preceded by punctuation.
   5928 
   5929 3.  A single `*` character [can close emphasis](@)
   5930     iff it is part of a [right-flanking delimiter run].
   5931 
   5932 4.  A single `_` character [can close emphasis] iff
   5933     it is part of a [right-flanking delimiter run]
   5934     and either (a) not part of a [left-flanking delimiter run]
   5935     or (b) part of a [left-flanking delimiter run]
   5936     followed by punctuation.
   5937 
   5938 5.  A double `**` [can open strong emphasis](@)
   5939     iff it is part of a [left-flanking delimiter run].
   5940 
   5941 6.  A double `__` [can open strong emphasis] iff
   5942     it is part of a [left-flanking delimiter run]
   5943     and either (a) not part of a [right-flanking delimiter run]
   5944     or (b) part of a [right-flanking delimiter run]
   5945     preceded by punctuation.
   5946 
   5947 7.  A double `**` [can close strong emphasis](@)
   5948     iff it is part of a [right-flanking delimiter run].
   5949 
   5950 8.  A double `__` [can close strong emphasis] iff
   5951     it is part of a [right-flanking delimiter run]
   5952     and either (a) not part of a [left-flanking delimiter run]
   5953     or (b) part of a [left-flanking delimiter run]
   5954     followed by punctuation.
   5955 
   5956 9.  Emphasis begins with a delimiter that [can open emphasis] and ends
   5957     with a delimiter that [can close emphasis], and that uses the same
   5958     character (`_` or `*`) as the opening delimiter.  The
   5959     opening and closing delimiters must belong to separate
   5960     [delimiter runs].  If one of the delimiters can both
   5961     open and close emphasis, then the sum of the lengths of the
   5962     delimiter runs containing the opening and closing delimiters
   5963     must not be a multiple of 3.
   5964 
   5965 10. Strong emphasis begins with a delimiter that
   5966     [can open strong emphasis] and ends with a delimiter that
   5967     [can close strong emphasis], and that uses the same character
   5968     (`_` or `*`) as the opening delimiter.  The
   5969     opening and closing delimiters must belong to separate
   5970     [delimiter runs].  If one of the delimiters can both open
   5971     and close strong emphasis, then the sum of the lengths of
   5972     the delimiter runs containing the opening and closing
   5973     delimiters must not be a multiple of 3.
   5974 
   5975 11. A literal `*` character cannot occur at the beginning or end of
   5976     `*`-delimited emphasis or `**`-delimited strong emphasis, unless it
   5977     is backslash-escaped.
   5978 
   5979 12. A literal `_` character cannot occur at the beginning or end of
   5980     `_`-delimited emphasis or `__`-delimited strong emphasis, unless it
   5981     is backslash-escaped.
   5982 
   5983 Where rules 1--12 above are compatible with multiple parsings,
   5984 the following principles resolve ambiguity:
   5985 
   5986 13. The number of nestings should be minimized. Thus, for example,
   5987     an interpretation `<strong>...</strong>` is always preferred to
   5988     `<em><em>...</em></em>`.
   5989 
   5990 14. An interpretation `<em><strong>...</strong></em>` is always
   5991     preferred to `<strong><em>...</em></strong>`.
   5992 
   5993 15. When two potential emphasis or strong emphasis spans overlap,
   5994     so that the second begins before the first ends and ends after
   5995     the first ends, the first takes precedence. Thus, for example,
   5996     `*foo _bar* baz_` is parsed as `<em>foo _bar</em> baz_` rather
   5997     than `*foo <em>bar* baz</em>`.
   5998 
   5999 16. When there are two potential emphasis or strong emphasis spans
   6000     with the same closing delimiter, the shorter one (the one that
   6001     opens later) takes precedence. Thus, for example,
   6002     `**foo **bar baz**` is parsed as `**foo <strong>bar baz</strong>`
   6003     rather than `<strong>foo **bar baz</strong>`.
   6004 
   6005 17. Inline code spans, links, images, and HTML tags group more tightly
   6006     than emphasis.  So, when there is a choice between an interpretation
   6007     that contains one of these elements and one that does not, the
   6008     former always wins.  Thus, for example, `*[foo*](bar)` is
   6009     parsed as `*<a href="bar">foo*</a>` rather than as
   6010     `<em>[foo</em>](bar)`.
   6011 
   6012 These rules can be illustrated through a series of examples.
   6013 
   6014 Rule 1:
   6015 
   6016 ```````````````````````````````` example
   6017 *foo bar*
   6018 .
   6019 <p><em>foo bar</em></p>
   6020 ````````````````````````````````
   6021 
   6022 
   6023 This is not emphasis, because the opening `*` is followed by
   6024 whitespace, and hence not part of a [left-flanking delimiter run]:
   6025 
   6026 ```````````````````````````````` example
   6027 a * foo bar*
   6028 .
   6029 <p>a * foo bar*</p>
   6030 ````````````````````````````````
   6031 
   6032 
   6033 This is not emphasis, because the opening `*` is preceded
   6034 by an alphanumeric and followed by punctuation, and hence
   6035 not part of a [left-flanking delimiter run]:
   6036 
   6037 ```````````````````````````````` example
   6038 a*"foo"*
   6039 .
   6040 <p>a*&quot;foo&quot;*</p>
   6041 ````````````````````````````````
   6042 
   6043 
   6044 Unicode nonbreaking spaces count as whitespace, too:
   6045 
   6046 ```````````````````````````````` example
   6047 * a *
   6048 .
   6049 <p>* a *</p>
   6050 ````````````````````````````````
   6051 
   6052 
   6053 Intraword emphasis with `*` is permitted:
   6054 
   6055 ```````````````````````````````` example
   6056 foo*bar*
   6057 .
   6058 <p>foo<em>bar</em></p>
   6059 ````````````````````````````````
   6060 
   6061 
   6062 ```````````````````````````````` example
   6063 5*6*78
   6064 .
   6065 <p>5<em>6</em>78</p>
   6066 ````````````````````````````````
   6067 
   6068 
   6069 Rule 2:
   6070 
   6071 ```````````````````````````````` example
   6072 _foo bar_
   6073 .
   6074 <p><em>foo bar</em></p>
   6075 ````````````````````````````````
   6076 
   6077 
   6078 This is not emphasis, because the opening `_` is followed by
   6079 whitespace:
   6080 
   6081 ```````````````````````````````` example
   6082 _ foo bar_
   6083 .
   6084 <p>_ foo bar_</p>
   6085 ````````````````````````````````
   6086 
   6087 
   6088 This is not emphasis, because the opening `_` is preceded
   6089 by an alphanumeric and followed by punctuation:
   6090 
   6091 ```````````````````````````````` example
   6092 a_"foo"_
   6093 .
   6094 <p>a_&quot;foo&quot;_</p>
   6095 ````````````````````````````````
   6096 
   6097 
   6098 Emphasis with `_` is not allowed inside words:
   6099 
   6100 ```````````````````````````````` example
   6101 foo_bar_
   6102 .
   6103 <p>foo_bar_</p>
   6104 ````````````````````````````````
   6105 
   6106 
   6107 ```````````````````````````````` example
   6108 5_6_78
   6109 .
   6110 <p>5_6_78</p>
   6111 ````````````````````````````````
   6112 
   6113 
   6114 ```````````````````````````````` example
   6115 пристаням_стремятся_
   6116 .
   6117 <p>пристаням_стремятся_</p>
   6118 ````````````````````````````````
   6119 
   6120 
   6121 Here `_` does not generate emphasis, because the first delimiter run
   6122 is right-flanking and the second left-flanking:
   6123 
   6124 ```````````````````````````````` example
   6125 aa_"bb"_cc
   6126 .
   6127 <p>aa_&quot;bb&quot;_cc</p>
   6128 ````````````````````````````````
   6129 
   6130 
   6131 This is emphasis, even though the opening delimiter is
   6132 both left- and right-flanking, because it is preceded by
   6133 punctuation:
   6134 
   6135 ```````````````````````````````` example
   6136 foo-_(bar)_
   6137 .
   6138 <p>foo-<em>(bar)</em></p>
   6139 ````````````````````````````````
   6140 
   6141 
   6142 Rule 3:
   6143 
   6144 This is not emphasis, because the closing delimiter does
   6145 not match the opening delimiter:
   6146 
   6147 ```````````````````````````````` example
   6148 _foo*
   6149 .
   6150 <p>_foo*</p>
   6151 ````````````````````````````````
   6152 
   6153 
   6154 This is not emphasis, because the closing `*` is preceded by
   6155 whitespace:
   6156 
   6157 ```````````````````````````````` example
   6158 *foo bar *
   6159 .
   6160 <p>*foo bar *</p>
   6161 ````````````````````````````````
   6162 
   6163 
   6164 A newline also counts as whitespace:
   6165 
   6166 ```````````````````````````````` example
   6167 *foo bar
   6168 *
   6169 .
   6170 <p>*foo bar
   6171 *</p>
   6172 ````````````````````````````````
   6173 
   6174 
   6175 This is not emphasis, because the second `*` is
   6176 preceded by punctuation and followed by an alphanumeric
   6177 (hence it is not part of a [right-flanking delimiter run]:
   6178 
   6179 ```````````````````````````````` example
   6180 *(*foo)
   6181 .
   6182 <p>*(*foo)</p>
   6183 ````````````````````````````````
   6184 
   6185 
   6186 The point of this restriction is more easily appreciated
   6187 with this example:
   6188 
   6189 ```````````````````````````````` example
   6190 *(*foo*)*
   6191 .
   6192 <p><em>(<em>foo</em>)</em></p>
   6193 ````````````````````````````````
   6194 
   6195 
   6196 Intraword emphasis with `*` is allowed:
   6197 
   6198 ```````````````````````````````` example
   6199 *foo*bar
   6200 .
   6201 <p><em>foo</em>bar</p>
   6202 ````````````````````````````````
   6203 
   6204 
   6205 
   6206 Rule 4:
   6207 
   6208 This is not emphasis, because the closing `_` is preceded by
   6209 whitespace:
   6210 
   6211 ```````````````````````````````` example
   6212 _foo bar _
   6213 .
   6214 <p>_foo bar _</p>
   6215 ````````````````````````````````
   6216 
   6217 
   6218 This is not emphasis, because the second `_` is
   6219 preceded by punctuation and followed by an alphanumeric:
   6220 
   6221 ```````````````````````````````` example
   6222 _(_foo)
   6223 .
   6224 <p>_(_foo)</p>
   6225 ````````````````````````````````
   6226 
   6227 
   6228 This is emphasis within emphasis:
   6229 
   6230 ```````````````````````````````` example
   6231 _(_foo_)_
   6232 .
   6233 <p><em>(<em>foo</em>)</em></p>
   6234 ````````````````````````````````
   6235 
   6236 
   6237 Intraword emphasis is disallowed for `_`:
   6238 
   6239 ```````````````````````````````` example
   6240 _foo_bar
   6241 .
   6242 <p>_foo_bar</p>
   6243 ````````````````````````````````
   6244 
   6245 
   6246 ```````````````````````````````` example
   6247 _пристаням_стремятся
   6248 .
   6249 <p>_пристаням_стремятся</p>
   6250 ````````````````````````````````
   6251 
   6252 
   6253 ```````````````````````````````` example
   6254 _foo_bar_baz_
   6255 .
   6256 <p><em>foo_bar_baz</em></p>
   6257 ````````````````````````````````
   6258 
   6259 
   6260 This is emphasis, even though the closing delimiter is
   6261 both left- and right-flanking, because it is followed by
   6262 punctuation:
   6263 
   6264 ```````````````````````````````` example
   6265 _(bar)_.
   6266 .
   6267 <p><em>(bar)</em>.</p>
   6268 ````````````````````````````````
   6269 
   6270 
   6271 Rule 5:
   6272 
   6273 ```````````````````````````````` example
   6274 **foo bar**
   6275 .
   6276 <p><strong>foo bar</strong></p>
   6277 ````````````````````````````````
   6278 
   6279 
   6280 This is not strong emphasis, because the opening delimiter is
   6281 followed by whitespace:
   6282 
   6283 ```````````````````````````````` example
   6284 ** foo bar**
   6285 .
   6286 <p>** foo bar**</p>
   6287 ````````````````````````````````
   6288 
   6289 
   6290 This is not strong emphasis, because the opening `**` is preceded
   6291 by an alphanumeric and followed by punctuation, and hence
   6292 not part of a [left-flanking delimiter run]:
   6293 
   6294 ```````````````````````````````` example
   6295 a**"foo"**
   6296 .
   6297 <p>a**&quot;foo&quot;**</p>
   6298 ````````````````````````````````
   6299 
   6300 
   6301 Intraword strong emphasis with `**` is permitted:
   6302 
   6303 ```````````````````````````````` example
   6304 foo**bar**
   6305 .
   6306 <p>foo<strong>bar</strong></p>
   6307 ````````````````````````````````
   6308 
   6309 
   6310 Rule 6:
   6311 
   6312 ```````````````````````````````` example
   6313 __foo bar__
   6314 .
   6315 <p><strong>foo bar</strong></p>
   6316 ````````````````````````````````
   6317 
   6318 
   6319 This is not strong emphasis, because the opening delimiter is
   6320 followed by whitespace:
   6321 
   6322 ```````````````````````````````` example
   6323 __ foo bar__
   6324 .
   6325 <p>__ foo bar__</p>
   6326 ````````````````````````````````
   6327 
   6328 
   6329 A newline counts as whitespace:
   6330 ```````````````````````````````` example
   6331 __
   6332 foo bar__
   6333 .
   6334 <p>__
   6335 foo bar__</p>
   6336 ````````````````````````````````
   6337 
   6338 
   6339 This is not strong emphasis, because the opening `__` is preceded
   6340 by an alphanumeric and followed by punctuation:
   6341 
   6342 ```````````````````````````````` example
   6343 a__"foo"__
   6344 .
   6345 <p>a__&quot;foo&quot;__</p>
   6346 ````````````````````````````````
   6347 
   6348 
   6349 Intraword strong emphasis is forbidden with `__`:
   6350 
   6351 ```````````````````````````````` example
   6352 foo__bar__
   6353 .
   6354 <p>foo__bar__</p>
   6355 ````````````````````````````````
   6356 
   6357 
   6358 ```````````````````````````````` example
   6359 5__6__78
   6360 .
   6361 <p>5__6__78</p>
   6362 ````````````````````````````````
   6363 
   6364 
   6365 ```````````````````````````````` example
   6366 пристаням__стремятся__
   6367 .
   6368 <p>пристаням__стремятся__</p>
   6369 ````````````````````````````````
   6370 
   6371 
   6372 ```````````````````````````````` example
   6373 __foo, __bar__, baz__
   6374 .
   6375 <p><strong>foo, <strong>bar</strong>, baz</strong></p>
   6376 ````````````````````````````````
   6377 
   6378 
   6379 This is strong emphasis, even though the opening delimiter is
   6380 both left- and right-flanking, because it is preceded by
   6381 punctuation:
   6382 
   6383 ```````````````````````````````` example
   6384 foo-__(bar)__
   6385 .
   6386 <p>foo-<strong>(bar)</strong></p>
   6387 ````````````````````````````````
   6388 
   6389 
   6390 
   6391 Rule 7:
   6392 
   6393 This is not strong emphasis, because the closing delimiter is preceded
   6394 by whitespace:
   6395 
   6396 ```````````````````````````````` example
   6397 **foo bar **
   6398 .
   6399 <p>**foo bar **</p>
   6400 ````````````````````````````````
   6401 
   6402 
   6403 (Nor can it be interpreted as an emphasized `*foo bar *`, because of
   6404 Rule 11.)
   6405 
   6406 This is not strong emphasis, because the second `**` is
   6407 preceded by punctuation and followed by an alphanumeric:
   6408 
   6409 ```````````````````````````````` example
   6410 **(**foo)
   6411 .
   6412 <p>**(**foo)</p>
   6413 ````````````````````````````````
   6414 
   6415 
   6416 The point of this restriction is more easily appreciated
   6417 with these examples:
   6418 
   6419 ```````````````````````````````` example
   6420 *(**foo**)*
   6421 .
   6422 <p><em>(<strong>foo</strong>)</em></p>
   6423 ````````````````````````````````
   6424 
   6425 
   6426 ```````````````````````````````` example
   6427 **Gomphocarpus (*Gomphocarpus physocarpus*, syn.
   6428 *Asclepias physocarpa*)**
   6429 .
   6430 <p><strong>Gomphocarpus (<em>Gomphocarpus physocarpus</em>, syn.
   6431 <em>Asclepias physocarpa</em>)</strong></p>
   6432 ````````````````````````````````
   6433 
   6434 
   6435 ```````````````````````````````` example
   6436 **foo "*bar*" foo**
   6437 .
   6438 <p><strong>foo &quot;<em>bar</em>&quot; foo</strong></p>
   6439 ````````````````````````````````
   6440 
   6441 
   6442 Intraword emphasis:
   6443 
   6444 ```````````````````````````````` example
   6445 **foo**bar
   6446 .
   6447 <p><strong>foo</strong>bar</p>
   6448 ````````````````````````````````
   6449 
   6450 
   6451 Rule 8:
   6452 
   6453 This is not strong emphasis, because the closing delimiter is
   6454 preceded by whitespace:
   6455 
   6456 ```````````````````````````````` example
   6457 __foo bar __
   6458 .
   6459 <p>__foo bar __</p>
   6460 ````````````````````````````````
   6461 
   6462 
   6463 This is not strong emphasis, because the second `__` is
   6464 preceded by punctuation and followed by an alphanumeric:
   6465 
   6466 ```````````````````````````````` example
   6467 __(__foo)
   6468 .
   6469 <p>__(__foo)</p>
   6470 ````````````````````````````````
   6471 
   6472 
   6473 The point of this restriction is more easily appreciated
   6474 with this example:
   6475 
   6476 ```````````````````````````````` example
   6477 _(__foo__)_
   6478 .
   6479 <p><em>(<strong>foo</strong>)</em></p>
   6480 ````````````````````````````````
   6481 
   6482 
   6483 Intraword strong emphasis is forbidden with `__`:
   6484 
   6485 ```````````````````````````````` example
   6486 __foo__bar
   6487 .
   6488 <p>__foo__bar</p>
   6489 ````````````````````````````````
   6490 
   6491 
   6492 ```````````````````````````````` example
   6493 __пристаням__стремятся
   6494 .
   6495 <p>__пристаням__стремятся</p>
   6496 ````````````````````````````````
   6497 
   6498 
   6499 ```````````````````````````````` example
   6500 __foo__bar__baz__
   6501 .
   6502 <p><strong>foo__bar__baz</strong></p>
   6503 ````````````````````````````````
   6504 
   6505 
   6506 This is strong emphasis, even though the closing delimiter is
   6507 both left- and right-flanking, because it is followed by
   6508 punctuation:
   6509 
   6510 ```````````````````````````````` example
   6511 __(bar)__.
   6512 .
   6513 <p><strong>(bar)</strong>.</p>
   6514 ````````````````````````````````
   6515 
   6516 
   6517 Rule 9:
   6518 
   6519 Any nonempty sequence of inline elements can be the contents of an
   6520 emphasized span.
   6521 
   6522 ```````````````````````````````` example
   6523 *foo [bar](/url)*
   6524 .
   6525 <p><em>foo <a href="/url">bar</a></em></p>
   6526 ````````````````````````````````
   6527 
   6528 
   6529 ```````````````````````````````` example
   6530 *foo
   6531 bar*
   6532 .
   6533 <p><em>foo
   6534 bar</em></p>
   6535 ````````````````````````````````
   6536 
   6537 
   6538 In particular, emphasis and strong emphasis can be nested
   6539 inside emphasis:
   6540 
   6541 ```````````````````````````````` example
   6542 _foo __bar__ baz_
   6543 .
   6544 <p><em>foo <strong>bar</strong> baz</em></p>
   6545 ````````````````````````````````
   6546 
   6547 
   6548 ```````````````````````````````` example
   6549 _foo _bar_ baz_
   6550 .
   6551 <p><em>foo <em>bar</em> baz</em></p>
   6552 ````````````````````````````````
   6553 
   6554 
   6555 ```````````````````````````````` example
   6556 __foo_ bar_
   6557 .
   6558 <p><em><em>foo</em> bar</em></p>
   6559 ````````````````````````````````
   6560 
   6561 
   6562 ```````````````````````````````` example
   6563 *foo *bar**
   6564 .
   6565 <p><em>foo <em>bar</em></em></p>
   6566 ````````````````````````````````
   6567 
   6568 
   6569 ```````````````````````````````` example
   6570 *foo **bar** baz*
   6571 .
   6572 <p><em>foo <strong>bar</strong> baz</em></p>
   6573 ````````````````````````````````
   6574 
   6575 ```````````````````````````````` example
   6576 *foo**bar**baz*
   6577 .
   6578 <p><em>foo<strong>bar</strong>baz</em></p>
   6579 ````````````````````````````````
   6580 
   6581 Note that in the preceding case, the interpretation
   6582 
   6583 ``` markdown
   6584 <p><em>foo</em><em>bar<em></em>baz</em></p>
   6585 ```
   6586 
   6587 
   6588 is precluded by the condition that a delimiter that
   6589 can both open and close (like the `*` after `foo`)
   6590 cannot form emphasis if the sum of the lengths of
   6591 the delimiter runs containing the opening and
   6592 closing delimiters is a multiple of 3.
   6593 
   6594 The same condition ensures that the following
   6595 cases are all strong emphasis nested inside
   6596 emphasis, even when the interior spaces are
   6597 omitted:
   6598 
   6599 
   6600 ```````````````````````````````` example
   6601 ***foo** bar*
   6602 .
   6603 <p><em><strong>foo</strong> bar</em></p>
   6604 ````````````````````````````````
   6605 
   6606 
   6607 ```````````````````````````````` example
   6608 *foo **bar***
   6609 .
   6610 <p><em>foo <strong>bar</strong></em></p>
   6611 ````````````````````````````````
   6612 
   6613 
   6614 ```````````````````````````````` example
   6615 *foo**bar***
   6616 .
   6617 <p><em>foo<strong>bar</strong></em></p>
   6618 ````````````````````````````````
   6619 
   6620 
   6621 Indefinite levels of nesting are possible:
   6622 
   6623 ```````````````````````````````` example
   6624 *foo **bar *baz* bim** bop*
   6625 .
   6626 <p><em>foo <strong>bar <em>baz</em> bim</strong> bop</em></p>
   6627 ````````````````````````````````
   6628 
   6629 
   6630 ```````````````````````````````` example
   6631 *foo [*bar*](/url)*
   6632 .
   6633 <p><em>foo <a href="/url"><em>bar</em></a></em></p>
   6634 ````````````````````````````````
   6635 
   6636 
   6637 There can be no empty emphasis or strong emphasis:
   6638 
   6639 ```````````````````````````````` example
   6640 ** is not an empty emphasis
   6641 .
   6642 <p>** is not an empty emphasis</p>
   6643 ````````````````````````````````
   6644 
   6645 
   6646 ```````````````````````````````` example
   6647 **** is not an empty strong emphasis
   6648 .
   6649 <p>**** is not an empty strong emphasis</p>
   6650 ````````````````````````````````
   6651 
   6652 
   6653 
   6654 Rule 10:
   6655 
   6656 Any nonempty sequence of inline elements can be the contents of an
   6657 strongly emphasized span.
   6658 
   6659 ```````````````````````````````` example
   6660 **foo [bar](/url)**
   6661 .
   6662 <p><strong>foo <a href="/url">bar</a></strong></p>
   6663 ````````````````````````````````
   6664 
   6665 
   6666 ```````````````````````````````` example
   6667 **foo
   6668 bar**
   6669 .
   6670 <p><strong>foo
   6671 bar</strong></p>
   6672 ````````````````````````````````
   6673 
   6674 
   6675 In particular, emphasis and strong emphasis can be nested
   6676 inside strong emphasis:
   6677 
   6678 ```````````````````````````````` example
   6679 __foo _bar_ baz__
   6680 .
   6681 <p><strong>foo <em>bar</em> baz</strong></p>
   6682 ````````````````````````````````
   6683 
   6684 
   6685 ```````````````````````````````` example
   6686 __foo __bar__ baz__
   6687 .
   6688 <p><strong>foo <strong>bar</strong> baz</strong></p>
   6689 ````````````````````````````````
   6690 
   6691 
   6692 ```````````````````````````````` example
   6693 ____foo__ bar__
   6694 .
   6695 <p><strong><strong>foo</strong> bar</strong></p>
   6696 ````````````````````````````````
   6697 
   6698 
   6699 ```````````````````````````````` example
   6700 **foo **bar****
   6701 .
   6702 <p><strong>foo <strong>bar</strong></strong></p>
   6703 ````````````````````````````````
   6704 
   6705 
   6706 ```````````````````````````````` example
   6707 **foo *bar* baz**
   6708 .
   6709 <p><strong>foo <em>bar</em> baz</strong></p>
   6710 ````````````````````````````````
   6711 
   6712 
   6713 ```````````````````````````````` example
   6714 **foo*bar*baz**
   6715 .
   6716 <p><strong>foo<em>bar</em>baz</strong></p>
   6717 ````````````````````````````````
   6718 
   6719 
   6720 ```````````````````````````````` example
   6721 ***foo* bar**
   6722 .
   6723 <p><strong><em>foo</em> bar</strong></p>
   6724 ````````````````````````````````
   6725 
   6726 
   6727 ```````````````````````````````` example
   6728 **foo *bar***
   6729 .
   6730 <p><strong>foo <em>bar</em></strong></p>
   6731 ````````````````````````````````
   6732 
   6733 
   6734 Indefinite levels of nesting are possible:
   6735 
   6736 ```````````````````````````````` example
   6737 **foo *bar **baz**
   6738 bim* bop**
   6739 .
   6740 <p><strong>foo <em>bar <strong>baz</strong>
   6741 bim</em> bop</strong></p>
   6742 ````````````````````````````````
   6743 
   6744 
   6745 ```````````````````````````````` example
   6746 **foo [*bar*](/url)**
   6747 .
   6748 <p><strong>foo <a href="/url"><em>bar</em></a></strong></p>
   6749 ````````````````````````````````
   6750 
   6751 
   6752 There can be no empty emphasis or strong emphasis:
   6753 
   6754 ```````````````````````````````` example
   6755 __ is not an empty emphasis
   6756 .
   6757 <p>__ is not an empty emphasis</p>
   6758 ````````````````````````````````
   6759 
   6760 
   6761 ```````````````````````````````` example
   6762 ____ is not an empty strong emphasis
   6763 .
   6764 <p>____ is not an empty strong emphasis</p>
   6765 ````````````````````````````````
   6766 
   6767 
   6768 
   6769 Rule 11:
   6770 
   6771 ```````````````````````````````` example
   6772 foo ***
   6773 .
   6774 <p>foo ***</p>
   6775 ````````````````````````````````
   6776 
   6777 
   6778 ```````````````````````````````` example
   6779 foo *\**
   6780 .
   6781 <p>foo <em>*</em></p>
   6782 ````````````````````````````````
   6783 
   6784 
   6785 ```````````````````````````````` example
   6786 foo *_*
   6787 .
   6788 <p>foo <em>_</em></p>
   6789 ````````````````````````````````
   6790 
   6791 
   6792 ```````````````````````````````` example
   6793 foo *****
   6794 .
   6795 <p>foo *****</p>
   6796 ````````````````````````````````
   6797 
   6798 
   6799 ```````````````````````````````` example
   6800 foo **\***
   6801 .
   6802 <p>foo <strong>*</strong></p>
   6803 ````````````````````````````````
   6804 
   6805 
   6806 ```````````````````````````````` example
   6807 foo **_**
   6808 .
   6809 <p>foo <strong>_</strong></p>
   6810 ````````````````````````````````
   6811 
   6812 
   6813 Note that when delimiters do not match evenly, Rule 11 determines
   6814 that the excess literal `*` characters will appear outside of the
   6815 emphasis, rather than inside it:
   6816 
   6817 ```````````````````````````````` example
   6818 **foo*
   6819 .
   6820 <p>*<em>foo</em></p>
   6821 ````````````````````````````````
   6822 
   6823 
   6824 ```````````````````````````````` example
   6825 *foo**
   6826 .
   6827 <p><em>foo</em>*</p>
   6828 ````````````````````````````````
   6829 
   6830 
   6831 ```````````````````````````````` example
   6832 ***foo**
   6833 .
   6834 <p>*<strong>foo</strong></p>
   6835 ````````````````````````````````
   6836 
   6837 
   6838 ```````````````````````````````` example
   6839 ****foo*
   6840 .
   6841 <p>***<em>foo</em></p>
   6842 ````````````````````````````````
   6843 
   6844 
   6845 ```````````````````````````````` example
   6846 **foo***
   6847 .
   6848 <p><strong>foo</strong>*</p>
   6849 ````````````````````````````````
   6850 
   6851 
   6852 ```````````````````````````````` example
   6853 *foo****
   6854 .
   6855 <p><em>foo</em>***</p>
   6856 ````````````````````````````````
   6857 
   6858 
   6859 
   6860 Rule 12:
   6861 
   6862 ```````````````````````````````` example
   6863 foo ___
   6864 .
   6865 <p>foo ___</p>
   6866 ````````````````````````````````
   6867 
   6868 
   6869 ```````````````````````````````` example
   6870 foo _\__
   6871 .
   6872 <p>foo <em>_</em></p>
   6873 ````````````````````````````````
   6874 
   6875 
   6876 ```````````````````````````````` example
   6877 foo _*_
   6878 .
   6879 <p>foo <em>*</em></p>
   6880 ````````````````````````````````
   6881 
   6882 
   6883 ```````````````````````````````` example
   6884 foo _____
   6885 .
   6886 <p>foo _____</p>
   6887 ````````````````````````````````
   6888 
   6889 
   6890 ```````````````````````````````` example
   6891 foo __\___
   6892 .
   6893 <p>foo <strong>_</strong></p>
   6894 ````````````````````````````````
   6895 
   6896 
   6897 ```````````````````````````````` example
   6898 foo __*__
   6899 .
   6900 <p>foo <strong>*</strong></p>
   6901 ````````````````````````````````
   6902 
   6903 
   6904 ```````````````````````````````` example
   6905 __foo_
   6906 .
   6907 <p>_<em>foo</em></p>
   6908 ````````````````````````````````
   6909 
   6910 
   6911 Note that when delimiters do not match evenly, Rule 12 determines
   6912 that the excess literal `_` characters will appear outside of the
   6913 emphasis, rather than inside it:
   6914 
   6915 ```````````````````````````````` example
   6916 _foo__
   6917 .
   6918 <p><em>foo</em>_</p>
   6919 ````````````````````````````````
   6920 
   6921 
   6922 ```````````````````````````````` example
   6923 ___foo__
   6924 .
   6925 <p>_<strong>foo</strong></p>
   6926 ````````````````````````````````
   6927 
   6928 
   6929 ```````````````````````````````` example
   6930 ____foo_
   6931 .
   6932 <p>___<em>foo</em></p>
   6933 ````````````````````````````````
   6934 
   6935 
   6936 ```````````````````````````````` example
   6937 __foo___
   6938 .
   6939 <p><strong>foo</strong>_</p>
   6940 ````````````````````````````````
   6941 
   6942 
   6943 ```````````````````````````````` example
   6944 _foo____
   6945 .
   6946 <p><em>foo</em>___</p>
   6947 ````````````````````````````````
   6948 
   6949 
   6950 Rule 13 implies that if you want emphasis nested directly inside
   6951 emphasis, you must use different delimiters:
   6952 
   6953 ```````````````````````````````` example
   6954 **foo**
   6955 .
   6956 <p><strong>foo</strong></p>
   6957 ````````````````````````````````
   6958 
   6959 
   6960 ```````````````````````````````` example
   6961 *_foo_*
   6962 .
   6963 <p><em><em>foo</em></em></p>
   6964 ````````````````````````````````
   6965 
   6966 
   6967 ```````````````````````````````` example
   6968 __foo__
   6969 .
   6970 <p><strong>foo</strong></p>
   6971 ````````````````````````````````
   6972 
   6973 
   6974 ```````````````````````````````` example
   6975 _*foo*_
   6976 .
   6977 <p><em><em>foo</em></em></p>
   6978 ````````````````````````````````
   6979 
   6980 
   6981 However, strong emphasis within strong emphasis is possible without
   6982 switching delimiters:
   6983 
   6984 ```````````````````````````````` example
   6985 ****foo****
   6986 .
   6987 <p><strong><strong>foo</strong></strong></p>
   6988 ````````````````````````````````
   6989 
   6990 
   6991 ```````````````````````````````` example
   6992 ____foo____
   6993 .
   6994 <p><strong><strong>foo</strong></strong></p>
   6995 ````````````````````````````````
   6996 
   6997 
   6998 
   6999 Rule 13 can be applied to arbitrarily long sequences of
   7000 delimiters:
   7001 
   7002 ```````````````````````````````` example
   7003 ******foo******
   7004 .
   7005 <p><strong><strong><strong>foo</strong></strong></strong></p>
   7006 ````````````````````````````````
   7007 
   7008 
   7009 Rule 14:
   7010 
   7011 ```````````````````````````````` example
   7012 ***foo***
   7013 .
   7014 <p><em><strong>foo</strong></em></p>
   7015 ````````````````````````````````
   7016 
   7017 
   7018 ```````````````````````````````` example
   7019 _____foo_____
   7020 .
   7021 <p><em><strong><strong>foo</strong></strong></em></p>
   7022 ````````````````````````````````
   7023 
   7024 
   7025 Rule 15:
   7026 
   7027 ```````````````````````````````` example
   7028 *foo _bar* baz_
   7029 .
   7030 <p><em>foo _bar</em> baz_</p>
   7031 ````````````````````````````````
   7032 
   7033 
   7034 ```````````````````````````````` example
   7035 *foo __bar *baz bim__ bam*
   7036 .
   7037 <p><em>foo <strong>bar *baz bim</strong> bam</em></p>
   7038 ````````````````````````````````
   7039 
   7040 
   7041 Rule 16:
   7042 
   7043 ```````````````````````````````` example
   7044 **foo **bar baz**
   7045 .
   7046 <p>**foo <strong>bar baz</strong></p>
   7047 ````````````````````````````````
   7048 
   7049 
   7050 ```````````````````````````````` example
   7051 *foo *bar baz*
   7052 .
   7053 <p>*foo <em>bar baz</em></p>
   7054 ````````````````````````````````
   7055 
   7056 
   7057 Rule 17:
   7058 
   7059 ```````````````````````````````` example
   7060 *[bar*](/url)
   7061 .
   7062 <p>*<a href="/url">bar*</a></p>
   7063 ````````````````````````````````
   7064 
   7065 
   7066 ```````````````````````````````` example
   7067 _foo [bar_](/url)
   7068 .
   7069 <p>_foo <a href="/url">bar_</a></p>
   7070 ````````````````````````````````
   7071 
   7072 
   7073 ```````````````````````````````` example
   7074 *<img src="foo" title="*"/>
   7075 .
   7076 <p>*<img src="foo" title="*"/></p>
   7077 ````````````````````````````````
   7078 
   7079 
   7080 ```````````````````````````````` example
   7081 **<a href="**">
   7082 .
   7083 <p>**<a href="**"></p>
   7084 ````````````````````````````````
   7085 
   7086 
   7087 ```````````````````````````````` example
   7088 __<a href="__">
   7089 .
   7090 <p>__<a href="__"></p>
   7091 ````````````````````````````````
   7092 
   7093 
   7094 ```````````````````````````````` example
   7095 *a `*`*
   7096 .
   7097 <p><em>a <code>*</code></em></p>
   7098 ````````````````````````````````
   7099 
   7100 
   7101 ```````````````````````````````` example
   7102 _a `_`_
   7103 .
   7104 <p><em>a <code>_</code></em></p>
   7105 ````````````````````````````````
   7106 
   7107 
   7108 ```````````````````````````````` example
   7109 **a<http://foo.bar/?q=**>
   7110 .
   7111 <p>**a<a href="http://foo.bar/?q=**">http://foo.bar/?q=**</a></p>
   7112 ````````````````````````````````
   7113 
   7114 
   7115 ```````````````````````````````` example
   7116 __a<http://foo.bar/?q=__>
   7117 .
   7118 <p>__a<a href="http://foo.bar/?q=__">http://foo.bar/?q=__</a></p>
   7119 ````````````````````````````````
   7120 
   7121 
   7122 
   7123 ## Links
   7124 
   7125 A link contains [link text] (the visible text), a [link destination]
   7126 (the URI that is the link destination), and optionally a [link title].
   7127 There are two basic kinds of links in Markdown.  In [inline links] the
   7128 destination and title are given immediately after the link text.  In
   7129 [reference links] the destination and title are defined elsewhere in
   7130 the document.
   7131 
   7132 A [link text](@) consists of a sequence of zero or more
   7133 inline elements enclosed by square brackets (`[` and `]`).  The
   7134 following rules apply:
   7135 
   7136 - Links may not contain other links, at any level of nesting. If
   7137   multiple otherwise valid link definitions appear nested inside each
   7138   other, the inner-most definition is used.
   7139 
   7140 - Brackets are allowed in the [link text] only if (a) they
   7141   are backslash-escaped or (b) they appear as a matched pair of brackets,
   7142   with an open bracket `[`, a sequence of zero or more inlines, and
   7143   a close bracket `]`.
   7144 
   7145 - Backtick [code spans], [autolinks], and raw [HTML tags] bind more tightly
   7146   than the brackets in link text.  Thus, for example,
   7147   `` [foo`]` `` could not be a link text, since the second `]`
   7148   is part of a code span.
   7149 
   7150 - The brackets in link text bind more tightly than markers for
   7151   [emphasis and strong emphasis]. Thus, for example, `*[foo*](url)` is a link.
   7152 
   7153 A [link destination](@) consists of either
   7154 
   7155 - a sequence of zero or more characters between an opening `<` and a
   7156   closing `>` that contains no spaces, line breaks, or unescaped
   7157   `<` or `>` characters, or
   7158 
   7159 - a nonempty sequence of characters that does not include
   7160   ASCII space or control characters, and includes parentheses
   7161   only if (a) they are backslash-escaped or (b) they are part of
   7162   a balanced pair of unescaped parentheses.
   7163 
   7164 A [link title](@)  consists of either
   7165 
   7166 - a sequence of zero or more characters between straight double-quote
   7167   characters (`"`), including a `"` character only if it is
   7168   backslash-escaped, or
   7169 
   7170 - a sequence of zero or more characters between straight single-quote
   7171   characters (`'`), including a `'` character only if it is
   7172   backslash-escaped, or
   7173 
   7174 - a sequence of zero or more characters between matching parentheses
   7175   (`(...)`), including a `)` character only if it is backslash-escaped.
   7176 
   7177 Although [link titles] may span multiple lines, they may not contain
   7178 a [blank line].
   7179 
   7180 An [inline link](@) consists of a [link text] followed immediately
   7181 by a left parenthesis `(`, optional [whitespace], an optional
   7182 [link destination], an optional [link title] separated from the link
   7183 destination by [whitespace], optional [whitespace], and a right
   7184 parenthesis `)`. The link's text consists of the inlines contained
   7185 in the [link text] (excluding the enclosing square brackets).
   7186 The link's URI consists of the link destination, excluding enclosing
   7187 `<...>` if present, with backslash-escapes in effect as described
   7188 above.  The link's title consists of the link title, excluding its
   7189 enclosing delimiters, with backslash-escapes in effect as described
   7190 above.
   7191 
   7192 Here is a simple inline link:
   7193 
   7194 ```````````````````````````````` example
   7195 [link](/uri "title")
   7196 .
   7197 <p><a href="/uri" title="title">link</a></p>
   7198 ````````````````````````````````
   7199 
   7200 
   7201 The title may be omitted:
   7202 
   7203 ```````````````````````````````` example
   7204 [link](/uri)
   7205 .
   7206 <p><a href="/uri">link</a></p>
   7207 ````````````````````````````````
   7208 
   7209 
   7210 Both the title and the destination may be omitted:
   7211 
   7212 ```````````````````````````````` example
   7213 [link]()
   7214 .
   7215 <p><a href="">link</a></p>
   7216 ````````````````````````````````
   7217 
   7218 
   7219 ```````````````````````````````` example
   7220 [link](<>)
   7221 .
   7222 <p><a href="">link</a></p>
   7223 ````````````````````````````````
   7224 
   7225 
   7226 The destination cannot contain spaces or line breaks,
   7227 even if enclosed in pointy brackets:
   7228 
   7229 ```````````````````````````````` example
   7230 [link](/my uri)
   7231 .
   7232 <p>[link](/my uri)</p>
   7233 ````````````````````````````````
   7234 
   7235 
   7236 ```````````````````````````````` example
   7237 [link](</my uri>)
   7238 .
   7239 <p>[link](&lt;/my uri&gt;)</p>
   7240 ````````````````````````````````
   7241 
   7242 
   7243 ```````````````````````````````` example
   7244 [link](foo
   7245 bar)
   7246 .
   7247 <p>[link](foo
   7248 bar)</p>
   7249 ````````````````````````````````
   7250 
   7251 
   7252 ```````````````````````````````` example
   7253 [link](<foo
   7254 bar>)
   7255 .
   7256 <p>[link](<foo
   7257 bar>)</p>
   7258 ````````````````````````````````
   7259 
   7260 Parentheses inside the link destination may be escaped:
   7261 
   7262 ```````````````````````````````` example
   7263 [link](\(foo\))
   7264 .
   7265 <p><a href="(foo)">link</a></p>
   7266 ````````````````````````````````
   7267 
   7268 Any number parentheses are allowed without escaping, as long as they are
   7269 balanced:
   7270 
   7271 ```````````````````````````````` example
   7272 [link](foo(and(bar)))
   7273 .
   7274 <p><a href="foo(and(bar))">link</a></p>
   7275 ````````````````````````````````
   7276 
   7277 However, if you have unbalanced parentheses, you need to escape or use the
   7278 `<...>` form:
   7279 
   7280 ```````````````````````````````` example
   7281 [link](foo\(and\(bar\))
   7282 .
   7283 <p><a href="foo(and(bar)">link</a></p>
   7284 ````````````````````````````````
   7285 
   7286 
   7287 ```````````````````````````````` example
   7288 [link](<foo(and(bar)>)
   7289 .
   7290 <p><a href="foo(and(bar)">link</a></p>
   7291 ````````````````````````````````
   7292 
   7293 
   7294 Parentheses and other symbols can also be escaped, as usual
   7295 in Markdown:
   7296 
   7297 ```````````````````````````````` example
   7298 [link](foo\)\:)
   7299 .
   7300 <p><a href="foo):">link</a></p>
   7301 ````````````````````````````````
   7302 
   7303 
   7304 A link can contain fragment identifiers and queries:
   7305 
   7306 ```````````````````````````````` example
   7307 [link](#fragment)
   7308 
   7309 [link](http://example.com#fragment)
   7310 
   7311 [link](http://example.com?foo=3#frag)
   7312 .
   7313 <p><a href="#fragment">link</a></p>
   7314 <p><a href="http://example.com#fragment">link</a></p>
   7315 <p><a href="http://example.com?foo=3#frag">link</a></p>
   7316 ````````````````````````````````
   7317 
   7318 
   7319 Note that a backslash before a non-escapable character is
   7320 just a backslash:
   7321 
   7322 ```````````````````````````````` example
   7323 [link](foo\bar)
   7324 .
   7325 <p><a href="foo%5Cbar">link</a></p>
   7326 ````````````````````````````````
   7327 
   7328 
   7329 URL-escaping should be left alone inside the destination, as all
   7330 URL-escaped characters are also valid URL characters. Entity and
   7331 numerical character references in the destination will be parsed
   7332 into the corresponding Unicode code points, as usual.  These may
   7333 be optionally URL-escaped when written as HTML, but this spec
   7334 does not enforce any particular policy for rendering URLs in
   7335 HTML or other formats.  Renderers may make different decisions
   7336 about how to escape or normalize URLs in the output.
   7337 
   7338 ```````````````````````````````` example
   7339 [link](foo%20b&auml;)
   7340 .
   7341 <p><a href="foo%20b%C3%A4">link</a></p>
   7342 ````````````````````````````````
   7343 
   7344 
   7345 Note that, because titles can often be parsed as destinations,
   7346 if you try to omit the destination and keep the title, you'll
   7347 get unexpected results:
   7348 
   7349 ```````````````````````````````` example
   7350 [link]("title")
   7351 .
   7352 <p><a href="%22title%22">link</a></p>
   7353 ````````````````````````````````
   7354 
   7355 
   7356 Titles may be in single quotes, double quotes, or parentheses:
   7357 
   7358 ```````````````````````````````` example
   7359 [link](/url "title")
   7360 [link](/url 'title')
   7361 [link](/url (title))
   7362 .
   7363 <p><a href="/url" title="title">link</a>
   7364 <a href="/url" title="title">link</a>
   7365 <a href="/url" title="title">link</a></p>
   7366 ````````````````````````````````
   7367 
   7368 
   7369 Backslash escapes and entity and numeric character references
   7370 may be used in titles:
   7371 
   7372 ```````````````````````````````` example
   7373 [link](/url "title \"&quot;")
   7374 .
   7375 <p><a href="/url" title="title &quot;&quot;">link</a></p>
   7376 ````````````````````````````````
   7377 
   7378 
   7379 Titles must be separated from the link using a [whitespace].
   7380 Other [Unicode whitespace] like non-breaking space doesn't work.
   7381 
   7382 ```````````````````````````````` example
   7383 [link](/url "title")
   7384 .
   7385 <p><a href="/url%C2%A0%22title%22">link</a></p>
   7386 ````````````````````````````````
   7387 
   7388 
   7389 Nested balanced quotes are not allowed without escaping:
   7390 
   7391 ```````````````````````````````` example
   7392 [link](/url "title "and" title")
   7393 .
   7394 <p>[link](/url &quot;title &quot;and&quot; title&quot;)</p>
   7395 ````````````````````````````````
   7396 
   7397 
   7398 But it is easy to work around this by using a different quote type:
   7399 
   7400 ```````````````````````````````` example
   7401 [link](/url 'title "and" title')
   7402 .
   7403 <p><a href="/url" title="title &quot;and&quot; title">link</a></p>
   7404 ````````````````````````````````
   7405 
   7406 
   7407 (Note:  `Markdown.pl` did allow double quotes inside a double-quoted
   7408 title, and its test suite included a test demonstrating this.
   7409 But it is hard to see a good rationale for the extra complexity this
   7410 brings, since there are already many ways---backslash escaping,
   7411 entity and numeric character references, or using a different
   7412 quote type for the enclosing title---to write titles containing
   7413 double quotes.  `Markdown.pl`'s handling of titles has a number
   7414 of other strange features.  For example, it allows single-quoted
   7415 titles in inline links, but not reference links.  And, in
   7416 reference links but not inline links, it allows a title to begin
   7417 with `"` and end with `)`.  `Markdown.pl` 1.0.1 even allows
   7418 titles with no closing quotation mark, though 1.0.2b8 does not.
   7419 It seems preferable to adopt a simple, rational rule that works
   7420 the same way in inline links and link reference definitions.)
   7421 
   7422 [Whitespace] is allowed around the destination and title:
   7423 
   7424 ```````````````````````````````` example
   7425 [link](   /uri
   7426   "title"  )
   7427 .
   7428 <p><a href="/uri" title="title">link</a></p>
   7429 ````````````````````````````````
   7430 
   7431 
   7432 But it is not allowed between the link text and the
   7433 following parenthesis:
   7434 
   7435 ```````````````````````````````` example
   7436 [link] (/uri)
   7437 .
   7438 <p>[link] (/uri)</p>
   7439 ````````````````````````````````
   7440 
   7441 
   7442 The link text may contain balanced brackets, but not unbalanced ones,
   7443 unless they are escaped:
   7444 
   7445 ```````````````````````````````` example
   7446 [link [foo [bar]]](/uri)
   7447 .
   7448 <p><a href="/uri">link [foo [bar]]</a></p>
   7449 ````````````````````````````````
   7450 
   7451 
   7452 ```````````````````````````````` example
   7453 [link] bar](/uri)
   7454 .
   7455 <p>[link] bar](/uri)</p>
   7456 ````````````````````````````````
   7457 
   7458 
   7459 ```````````````````````````````` example
   7460 [link [bar](/uri)
   7461 .
   7462 <p>[link <a href="/uri">bar</a></p>
   7463 ````````````````````````````````
   7464 
   7465 
   7466 ```````````````````````````````` example
   7467 [link \[bar](/uri)
   7468 .
   7469 <p><a href="/uri">link [bar</a></p>
   7470 ````````````````````````````````
   7471 
   7472 
   7473 The link text may contain inline content:
   7474 
   7475 ```````````````````````````````` example
   7476 [link *foo **bar** `#`*](/uri)
   7477 .
   7478 <p><a href="/uri">link <em>foo <strong>bar</strong> <code>#</code></em></a></p>
   7479 ````````````````````````````````
   7480 
   7481 
   7482 ```````````````````````````````` example
   7483 [![moon](moon.jpg)](/uri)
   7484 .
   7485 <p><a href="/uri"><img src="moon.jpg" alt="moon" /></a></p>
   7486 ````````````````````````````````
   7487 
   7488 
   7489 However, links may not contain other links, at any level of nesting.
   7490 
   7491 ```````````````````````````````` example
   7492 [foo [bar](/uri)](/uri)
   7493 .
   7494 <p>[foo <a href="/uri">bar</a>](/uri)</p>
   7495 ````````````````````````````````
   7496 
   7497 
   7498 ```````````````````````````````` example
   7499 [foo *[bar [baz](/uri)](/uri)*](/uri)
   7500 .
   7501 <p>[foo <em>[bar <a href="/uri">baz</a>](/uri)</em>](/uri)</p>
   7502 ````````````````````````````````
   7503 
   7504 
   7505 ```````````````````````````````` example
   7506 ![[[foo](uri1)](uri2)](uri3)
   7507 .
   7508 <p><img src="uri3" alt="[foo](uri2)" /></p>
   7509 ````````````````````````````````
   7510 
   7511 
   7512 These cases illustrate the precedence of link text grouping over
   7513 emphasis grouping:
   7514 
   7515 ```````````````````````````````` example
   7516 *[foo*](/uri)
   7517 .
   7518 <p>*<a href="/uri">foo*</a></p>
   7519 ````````````````````````````````
   7520 
   7521 
   7522 ```````````````````````````````` example
   7523 [foo *bar](baz*)
   7524 .
   7525 <p><a href="baz*">foo *bar</a></p>
   7526 ````````````````````````````````
   7527 
   7528 
   7529 Note that brackets that *aren't* part of links do not take
   7530 precedence:
   7531 
   7532 ```````````````````````````````` example
   7533 *foo [bar* baz]
   7534 .
   7535 <p><em>foo [bar</em> baz]</p>
   7536 ````````````````````````````````
   7537 
   7538 
   7539 These cases illustrate the precedence of HTML tags, code spans,
   7540 and autolinks over link grouping:
   7541 
   7542 ```````````````````````````````` example
   7543 [foo <bar attr="](baz)">
   7544 .
   7545 <p>[foo <bar attr="](baz)"></p>
   7546 ````````````````````````````````
   7547 
   7548 
   7549 ```````````````````````````````` example
   7550 [foo`](/uri)`
   7551 .
   7552 <p>[foo<code>](/uri)</code></p>
   7553 ````````````````````````````````
   7554 
   7555 
   7556 ```````````````````````````````` example
   7557 [foo<http://example.com/?search=](uri)>
   7558 .
   7559 <p>[foo<a href="http://example.com/?search=%5D(uri)">http://example.com/?search=](uri)</a></p>
   7560 ````````````````````````````````
   7561 
   7562 
   7563 There are three kinds of [reference link](@)s:
   7564 [full](#full-reference-link), [collapsed](#collapsed-reference-link),
   7565 and [shortcut](#shortcut-reference-link).
   7566 
   7567 A [full reference link](@)
   7568 consists of a [link text] immediately followed by a [link label]
   7569 that [matches] a [link reference definition] elsewhere in the document.
   7570 
   7571 A [link label](@)  begins with a left bracket (`[`) and ends
   7572 with the first right bracket (`]`) that is not backslash-escaped.
   7573 Between these brackets there must be at least one [non-whitespace character].
   7574 Unescaped square bracket characters are not allowed in
   7575 [link labels].  A link label can have at most 999
   7576 characters inside the square brackets.
   7577 
   7578 One label [matches](@)
   7579 another just in case their normalized forms are equal.  To normalize a
   7580 label, perform the *Unicode case fold* and collapse consecutive internal
   7581 [whitespace] to a single space.  If there are multiple
   7582 matching reference link definitions, the one that comes first in the
   7583 document is used.  (It is desirable in such cases to emit a warning.)
   7584 
   7585 The contents of the first link label are parsed as inlines, which are
   7586 used as the link's text.  The link's URI and title are provided by the
   7587 matching [link reference definition].
   7588 
   7589 Here is a simple example:
   7590 
   7591 ```````````````````````````````` example
   7592 [foo][bar]
   7593 
   7594 [bar]: /url "title"
   7595 .
   7596 <p><a href="/url" title="title">foo</a></p>
   7597 ````````````````````````````````
   7598 
   7599 
   7600 The rules for the [link text] are the same as with
   7601 [inline links].  Thus:
   7602 
   7603 The link text may contain balanced brackets, but not unbalanced ones,
   7604 unless they are escaped:
   7605 
   7606 ```````````````````````````````` example
   7607 [link [foo [bar]]][ref]
   7608 
   7609 [ref]: /uri
   7610 .
   7611 <p><a href="/uri">link [foo [bar]]</a></p>
   7612 ````````````````````````````````
   7613 
   7614 
   7615 ```````````````````````````````` example
   7616 [link \[bar][ref]
   7617 
   7618 [ref]: /uri
   7619 .
   7620 <p><a href="/uri">link [bar</a></p>
   7621 ````````````````````````````````
   7622 
   7623 
   7624 The link text may contain inline content:
   7625 
   7626 ```````````````````````````````` example
   7627 [link *foo **bar** `#`*][ref]
   7628 
   7629 [ref]: /uri
   7630 .
   7631 <p><a href="/uri">link <em>foo <strong>bar</strong> <code>#</code></em></a></p>
   7632 ````````````````````````````````
   7633 
   7634 
   7635 ```````````````````````````````` example
   7636 [![moon](moon.jpg)][ref]
   7637 
   7638 [ref]: /uri
   7639 .
   7640 <p><a href="/uri"><img src="moon.jpg" alt="moon" /></a></p>
   7641 ````````````````````````````````
   7642 
   7643 
   7644 However, links may not contain other links, at any level of nesting.
   7645 
   7646 ```````````````````````````````` example
   7647 [foo [bar](/uri)][ref]
   7648 
   7649 [ref]: /uri
   7650 .
   7651 <p>[foo <a href="/uri">bar</a>]<a href="/uri">ref</a></p>
   7652 ````````````````````````````````
   7653 
   7654 
   7655 ```````````````````````````````` example
   7656 [foo *bar [baz][ref]*][ref]
   7657 
   7658 [ref]: /uri
   7659 .
   7660 <p>[foo <em>bar <a href="/uri">baz</a></em>]<a href="/uri">ref</a></p>
   7661 ````````````````````````````````
   7662 
   7663 
   7664 (In the examples above, we have two [shortcut reference links]
   7665 instead of one [full reference link].)
   7666 
   7667 The following cases illustrate the precedence of link text grouping over
   7668 emphasis grouping:
   7669 
   7670 ```````````````````````````````` example
   7671 *[foo*][ref]
   7672 
   7673 [ref]: /uri
   7674 .
   7675 <p>*<a href="/uri">foo*</a></p>
   7676 ````````````````````````````````
   7677 
   7678 
   7679 ```````````````````````````````` example
   7680 [foo *bar][ref]
   7681 
   7682 [ref]: /uri
   7683 .
   7684 <p><a href="/uri">foo *bar</a></p>
   7685 ````````````````````````````````
   7686 
   7687 
   7688 These cases illustrate the precedence of HTML tags, code spans,
   7689 and autolinks over link grouping:
   7690 
   7691 ```````````````````````````````` example
   7692 [foo <bar attr="][ref]">
   7693 
   7694 [ref]: /uri
   7695 .
   7696 <p>[foo <bar attr="][ref]"></p>
   7697 ````````````````````````````````
   7698 
   7699 
   7700 ```````````````````````````````` example
   7701 [foo`][ref]`
   7702 
   7703 [ref]: /uri
   7704 .
   7705 <p>[foo<code>][ref]</code></p>
   7706 ````````````````````````````````
   7707 
   7708 
   7709 ```````````````````````````````` example
   7710 [foo<http://example.com/?search=][ref]>
   7711 
   7712 [ref]: /uri
   7713 .
   7714 <p>[foo<a href="http://example.com/?search=%5D%5Bref%5D">http://example.com/?search=][ref]</a></p>
   7715 ````````````````````````````````
   7716 
   7717 
   7718 Matching is case-insensitive:
   7719 
   7720 ```````````````````````````````` example
   7721 [foo][BaR]
   7722 
   7723 [bar]: /url "title"
   7724 .
   7725 <p><a href="/url" title="title">foo</a></p>
   7726 ````````````````````````````````
   7727 
   7728 
   7729 Unicode case fold is used:
   7730 
   7731 ```````````````````````````````` example
   7732 [Толпой][Толпой] is a Russian word.
   7733 
   7734 [ТОЛПОЙ]: /url
   7735 .
   7736 <p><a href="/url">Толпой</a> is a Russian word.</p>
   7737 ````````````````````````````````
   7738 
   7739 
   7740 Consecutive internal [whitespace] is treated as one space for
   7741 purposes of determining matching:
   7742 
   7743 ```````````````````````````````` example
   7744 [Foo
   7745   bar]: /url
   7746 
   7747 [Baz][Foo bar]
   7748 .
   7749 <p><a href="/url">Baz</a></p>
   7750 ````````````````````````````````
   7751 
   7752 
   7753 No [whitespace] is allowed between the [link text] and the
   7754 [link label]:
   7755 
   7756 ```````````````````````````````` example
   7757 [foo] [bar]
   7758 
   7759 [bar]: /url "title"
   7760 .
   7761 <p>[foo] <a href="/url" title="title">bar</a></p>
   7762 ````````````````````````````````
   7763 
   7764 
   7765 ```````````````````````````````` example
   7766 [foo]
   7767 [bar]
   7768 
   7769 [bar]: /url "title"
   7770 .
   7771 <p>[foo]
   7772 <a href="/url" title="title">bar</a></p>
   7773 ````````````````````````````````
   7774 
   7775 
   7776 This is a departure from John Gruber's original Markdown syntax
   7777 description, which explicitly allows whitespace between the link
   7778 text and the link label.  It brings reference links in line with
   7779 [inline links], which (according to both original Markdown and
   7780 this spec) cannot have whitespace after the link text.  More
   7781 importantly, it prevents inadvertent capture of consecutive
   7782 [shortcut reference links]. If whitespace is allowed between the
   7783 link text and the link label, then in the following we will have
   7784 a single reference link, not two shortcut reference links, as
   7785 intended:
   7786 
   7787 ``` markdown
   7788 [foo]
   7789 [bar]
   7790 
   7791 [foo]: /url1
   7792 [bar]: /url2
   7793 ```
   7794 
   7795 (Note that [shortcut reference links] were introduced by Gruber
   7796 himself in a beta version of `Markdown.pl`, but never included
   7797 in the official syntax description.  Without shortcut reference
   7798 links, it is harmless to allow space between the link text and
   7799 link label; but once shortcut references are introduced, it is
   7800 too dangerous to allow this, as it frequently leads to
   7801 unintended results.)
   7802 
   7803 When there are multiple matching [link reference definitions],
   7804 the first is used:
   7805 
   7806 ```````````````````````````````` example
   7807 [foo]: /url1
   7808 
   7809 [foo]: /url2
   7810 
   7811 [bar][foo]
   7812 .
   7813 <p><a href="/url1">bar</a></p>
   7814 ````````````````````````````````
   7815 
   7816 
   7817 Note that matching is performed on normalized strings, not parsed
   7818 inline content.  So the following does not match, even though the
   7819 labels define equivalent inline content:
   7820 
   7821 ```````````````````````````````` example
   7822 [bar][foo\!]
   7823 
   7824 [foo!]: /url
   7825 .
   7826 <p>[bar][foo!]</p>
   7827 ````````````````````````````````
   7828 
   7829 
   7830 [Link labels] cannot contain brackets, unless they are
   7831 backslash-escaped:
   7832 
   7833 ```````````````````````````````` example
   7834 [foo][ref[]
   7835 
   7836 [ref[]: /uri
   7837 .
   7838 <p>[foo][ref[]</p>
   7839 <p>[ref[]: /uri</p>
   7840 ````````````````````````````````
   7841 
   7842 
   7843 ```````````````````````````````` example
   7844 [foo][ref[bar]]
   7845 
   7846 [ref[bar]]: /uri
   7847 .
   7848 <p>[foo][ref[bar]]</p>
   7849 <p>[ref[bar]]: /uri</p>
   7850 ````````````````````````````````
   7851 
   7852 
   7853 ```````````````````````````````` example
   7854 [[[foo]]]
   7855 
   7856 [[[foo]]]: /url
   7857 .
   7858 <p>[[[foo]]]</p>
   7859 <p>[[[foo]]]: /url</p>
   7860 ````````````````````````````````
   7861 
   7862 
   7863 ```````````````````````````````` example
   7864 [foo][ref\[]
   7865 
   7866 [ref\[]: /uri
   7867 .
   7868 <p><a href="/uri">foo</a></p>
   7869 ````````````````````````````````
   7870 
   7871 
   7872 Note that in this example `]` is not backslash-escaped:
   7873 
   7874 ```````````````````````````````` example
   7875 [bar\\]: /uri
   7876 
   7877 [bar\\]
   7878 .
   7879 <p><a href="/uri">bar\</a></p>
   7880 ````````````````````````````````
   7881 
   7882 
   7883 A [link label] must contain at least one [non-whitespace character]:
   7884 
   7885 ```````````````````````````````` example
   7886 []
   7887 
   7888 []: /uri
   7889 .
   7890 <p>[]</p>
   7891 <p>[]: /uri</p>
   7892 ````````````````````````````````
   7893 
   7894 
   7895 ```````````````````````````````` example
   7896 [
   7897  ]
   7898 
   7899 [
   7900  ]: /uri
   7901 .
   7902 <p>[
   7903 ]</p>
   7904 <p>[
   7905 ]: /uri</p>
   7906 ````````````````````````````````
   7907 
   7908 
   7909 A [collapsed reference link](@)
   7910 consists of a [link label] that [matches] a
   7911 [link reference definition] elsewhere in the
   7912 document, followed by the string `[]`.
   7913 The contents of the first link label are parsed as inlines,
   7914 which are used as the link's text.  The link's URI and title are
   7915 provided by the matching reference link definition.  Thus,
   7916 `[foo][]` is equivalent to `[foo][foo]`.
   7917 
   7918 ```````````````````````````````` example
   7919 [foo][]
   7920 
   7921 [foo]: /url "title"
   7922 .
   7923 <p><a href="/url" title="title">foo</a></p>
   7924 ````````````````````````````````
   7925 
   7926 
   7927 ```````````````````````````````` example
   7928 [*foo* bar][]
   7929 
   7930 [*foo* bar]: /url "title"
   7931 .
   7932 <p><a href="/url" title="title"><em>foo</em> bar</a></p>
   7933 ````````````````````````````````
   7934 
   7935 
   7936 The link labels are case-insensitive:
   7937 
   7938 ```````````````````````````````` example
   7939 [Foo][]
   7940 
   7941 [foo]: /url "title"
   7942 .
   7943 <p><a href="/url" title="title">Foo</a></p>
   7944 ````````````````````````````````
   7945 
   7946 
   7947 
   7948 As with full reference links, [whitespace] is not
   7949 allowed between the two sets of brackets:
   7950 
   7951 ```````````````````````````````` example
   7952 [foo] 
   7953 []
   7954 
   7955 [foo]: /url "title"
   7956 .
   7957 <p><a href="/url" title="title">foo</a>
   7958 []</p>
   7959 ````````````````````````````````
   7960 
   7961 
   7962 A [shortcut reference link](@)
   7963 consists of a [link label] that [matches] a
   7964 [link reference definition] elsewhere in the
   7965 document and is not followed by `[]` or a link label.
   7966 The contents of the first link label are parsed as inlines,
   7967 which are used as the link's text.  The link's URI and title
   7968 are provided by the matching link reference definition.
   7969 Thus, `[foo]` is equivalent to `[foo][]`.
   7970 
   7971 ```````````````````````````````` example
   7972 [foo]
   7973 
   7974 [foo]: /url "title"
   7975 .
   7976 <p><a href="/url" title="title">foo</a></p>
   7977 ````````````````````````````````
   7978 
   7979 
   7980 ```````````````````````````````` example
   7981 [*foo* bar]
   7982 
   7983 [*foo* bar]: /url "title"
   7984 .
   7985 <p><a href="/url" title="title"><em>foo</em> bar</a></p>
   7986 ````````````````````````````````
   7987 
   7988 
   7989 ```````````````````````````````` example
   7990 [[*foo* bar]]
   7991 
   7992 [*foo* bar]: /url "title"
   7993 .
   7994 <p>[<a href="/url" title="title"><em>foo</em> bar</a>]</p>
   7995 ````````````````````````````````
   7996 
   7997 
   7998 ```````````````````````````````` example
   7999 [[bar [foo]
   8000 
   8001 [foo]: /url
   8002 .
   8003 <p>[[bar <a href="/url">foo</a></p>
   8004 ````````````````````````````````
   8005 
   8006 
   8007 The link labels are case-insensitive:
   8008 
   8009 ```````````````````````````````` example
   8010 [Foo]
   8011 
   8012 [foo]: /url "title"
   8013 .
   8014 <p><a href="/url" title="title">Foo</a></p>
   8015 ````````````````````````````````
   8016 
   8017 
   8018 A space after the link text should be preserved:
   8019 
   8020 ```````````````````````````````` example
   8021 [foo] bar
   8022 
   8023 [foo]: /url
   8024 .
   8025 <p><a href="/url">foo</a> bar</p>
   8026 ````````````````````````````````
   8027 
   8028 
   8029 If you just want bracketed text, you can backslash-escape the
   8030 opening bracket to avoid links:
   8031 
   8032 ```````````````````````````````` example
   8033 \[foo]
   8034 
   8035 [foo]: /url "title"
   8036 .
   8037 <p>[foo]</p>
   8038 ````````````````````````````````
   8039 
   8040 
   8041 Note that this is a link, because a link label ends with the first
   8042 following closing bracket:
   8043 
   8044 ```````````````````````````````` example
   8045 [foo*]: /url
   8046 
   8047 *[foo*]
   8048 .
   8049 <p>*<a href="/url">foo*</a></p>
   8050 ````````````````````````````````
   8051 
   8052 
   8053 Full and compact references take precedence over shortcut
   8054 references:
   8055 
   8056 ```````````````````````````````` example
   8057 [foo][bar]
   8058 
   8059 [foo]: /url1
   8060 [bar]: /url2
   8061 .
   8062 <p><a href="/url2">foo</a></p>
   8063 ````````````````````````````````
   8064 
   8065 ```````````````````````````````` example
   8066 [foo][]
   8067 
   8068 [foo]: /url1
   8069 .
   8070 <p><a href="/url1">foo</a></p>
   8071 ````````````````````````````````
   8072 
   8073 Inline links also take precedence:
   8074 
   8075 ```````````````````````````````` example
   8076 [foo]()
   8077 
   8078 [foo]: /url1
   8079 .
   8080 <p><a href="">foo</a></p>
   8081 ````````````````````````````````
   8082 
   8083 ```````````````````````````````` example
   8084 [foo](not a link)
   8085 
   8086 [foo]: /url1
   8087 .
   8088 <p><a href="/url1">foo</a>(not a link)</p>
   8089 ````````````````````````````````
   8090 
   8091 In the following case `[bar][baz]` is parsed as a reference,
   8092 `[foo]` as normal text:
   8093 
   8094 ```````````````````````````````` example
   8095 [foo][bar][baz]
   8096 
   8097 [baz]: /url
   8098 .
   8099 <p>[foo]<a href="/url">bar</a></p>
   8100 ````````````````````````````````
   8101 
   8102 
   8103 Here, though, `[foo][bar]` is parsed as a reference, since
   8104 `[bar]` is defined:
   8105 
   8106 ```````````````````````````````` example
   8107 [foo][bar][baz]
   8108 
   8109 [baz]: /url1
   8110 [bar]: /url2
   8111 .
   8112 <p><a href="/url2">foo</a><a href="/url1">baz</a></p>
   8113 ````````````````````````````````
   8114 
   8115 
   8116 Here `[foo]` is not parsed as a shortcut reference, because it
   8117 is followed by a link label (even though `[bar]` is not defined):
   8118 
   8119 ```````````````````````````````` example
   8120 [foo][bar][baz]
   8121 
   8122 [baz]: /url1
   8123 [foo]: /url2
   8124 .
   8125 <p>[foo]<a href="/url1">bar</a></p>
   8126 ````````````````````````````````
   8127 
   8128 
   8129 
   8130 ## Images
   8131 
   8132 Syntax for images is like the syntax for links, with one
   8133 difference. Instead of [link text], we have an
   8134 [image description](@).  The rules for this are the
   8135 same as for [link text], except that (a) an
   8136 image description starts with `![` rather than `[`, and
   8137 (b) an image description may contain links.
   8138 An image description has inline elements
   8139 as its contents.  When an image is rendered to HTML,
   8140 this is standardly used as the image's `alt` attribute.
   8141 
   8142 ```````````````````````````````` example
   8143 ![foo](/url "title")
   8144 .
   8145 <p><img src="/url" alt="foo" title="title" /></p>
   8146 ````````````````````````````````
   8147 
   8148 
   8149 ```````````````````````````````` example
   8150 ![foo *bar*]
   8151 
   8152 [foo *bar*]: train.jpg "train & tracks"
   8153 .
   8154 <p><img src="train.jpg" alt="foo bar" title="train &amp; tracks" /></p>
   8155 ````````````````````````````````
   8156 
   8157 
   8158 ```````````````````````````````` example
   8159 ![foo ![bar](/url)](/url2)
   8160 .
   8161 <p><img src="/url2" alt="foo bar" /></p>
   8162 ````````````````````````````````
   8163 
   8164 
   8165 ```````````````````````````````` example
   8166 ![foo [bar](/url)](/url2)
   8167 .
   8168 <p><img src="/url2" alt="foo bar" /></p>
   8169 ````````````````````````````````
   8170 
   8171 
   8172 Though this spec is concerned with parsing, not rendering, it is
   8173 recommended that in rendering to HTML, only the plain string content
   8174 of the [image description] be used.  Note that in
   8175 the above example, the alt attribute's value is `foo bar`, not `foo
   8176 [bar](/url)` or `foo <a href="/url">bar</a>`.  Only the plain string
   8177 content is rendered, without formatting.
   8178 
   8179 ```````````````````````````````` example
   8180 ![foo *bar*][]
   8181 
   8182 [foo *bar*]: train.jpg "train & tracks"
   8183 .
   8184 <p><img src="train.jpg" alt="foo bar" title="train &amp; tracks" /></p>
   8185 ````````````````````````````````
   8186 
   8187 
   8188 ```````````````````````````````` example
   8189 ![foo *bar*][foobar]
   8190 
   8191 [FOOBAR]: train.jpg "train & tracks"
   8192 .
   8193 <p><img src="train.jpg" alt="foo bar" title="train &amp; tracks" /></p>
   8194 ````````````````````````````````
   8195 
   8196 
   8197 ```````````````````````````````` example
   8198 ![foo](train.jpg)
   8199 .
   8200 <p><img src="train.jpg" alt="foo" /></p>
   8201 ````````````````````````````````
   8202 
   8203 
   8204 ```````````````````````````````` example
   8205 My ![foo bar](/path/to/train.jpg  "title"   )
   8206 .
   8207 <p>My <img src="/path/to/train.jpg" alt="foo bar" title="title" /></p>
   8208 ````````````````````````````````
   8209 
   8210 
   8211 ```````````````````````````````` example
   8212 ![foo](<url>)
   8213 .
   8214 <p><img src="url" alt="foo" /></p>
   8215 ````````````````````````````````
   8216 
   8217 
   8218 ```````````````````````````````` example
   8219 ![](/url)
   8220 .
   8221 <p><img src="/url" alt="" /></p>
   8222 ````````````````````````````````
   8223 
   8224 
   8225 Reference-style:
   8226 
   8227 ```````````````````````````````` example
   8228 ![foo][bar]
   8229 
   8230 [bar]: /url
   8231 .
   8232 <p><img src="/url" alt="foo" /></p>
   8233 ````````````````````````````````
   8234 
   8235 
   8236 ```````````````````````````````` example
   8237 ![foo][bar]
   8238 
   8239 [BAR]: /url
   8240 .
   8241 <p><img src="/url" alt="foo" /></p>
   8242 ````````````````````````````````
   8243 
   8244 
   8245 Collapsed:
   8246 
   8247 ```````````````````````````````` example
   8248 ![foo][]
   8249 
   8250 [foo]: /url "title"
   8251 .
   8252 <p><img src="/url" alt="foo" title="title" /></p>
   8253 ````````````````````````````````
   8254 
   8255 
   8256 ```````````````````````````````` example
   8257 ![*foo* bar][]
   8258 
   8259 [*foo* bar]: /url "title"
   8260 .
   8261 <p><img src="/url" alt="foo bar" title="title" /></p>
   8262 ````````````````````````````````
   8263 
   8264 
   8265 The labels are case-insensitive:
   8266 
   8267 ```````````````````````````````` example
   8268 ![Foo][]
   8269 
   8270 [foo]: /url "title"
   8271 .
   8272 <p><img src="/url" alt="Foo" title="title" /></p>
   8273 ````````````````````````````````
   8274 
   8275 
   8276 As with reference links, [whitespace] is not allowed
   8277 between the two sets of brackets:
   8278 
   8279 ```````````````````````````````` example
   8280 ![foo] 
   8281 []
   8282 
   8283 [foo]: /url "title"
   8284 .
   8285 <p><img src="/url" alt="foo" title="title" />
   8286 []</p>
   8287 ````````````````````````````````
   8288 
   8289 
   8290 Shortcut:
   8291 
   8292 ```````````````````````````````` example
   8293 ![foo]
   8294 
   8295 [foo]: /url "title"
   8296 .
   8297 <p><img src="/url" alt="foo" title="title" /></p>
   8298 ````````````````````````````````
   8299 
   8300 
   8301 ```````````````````````````````` example
   8302 ![*foo* bar]
   8303 
   8304 [*foo* bar]: /url "title"
   8305 .
   8306 <p><img src="/url" alt="foo bar" title="title" /></p>
   8307 ````````````````````````````````
   8308 
   8309 
   8310 Note that link labels cannot contain unescaped brackets:
   8311 
   8312 ```````````````````````````````` example
   8313 ![[foo]]
   8314 
   8315 [[foo]]: /url "title"
   8316 .
   8317 <p>![[foo]]</p>
   8318 <p>[[foo]]: /url &quot;title&quot;</p>
   8319 ````````````````````````````````
   8320 
   8321 
   8322 The link labels are case-insensitive:
   8323 
   8324 ```````````````````````````````` example
   8325 ![Foo]
   8326 
   8327 [foo]: /url "title"
   8328 .
   8329 <p><img src="/url" alt="Foo" title="title" /></p>
   8330 ````````````````````````````````
   8331 
   8332 
   8333 If you just want a literal `!` followed by bracketed text, you can
   8334 backslash-escape the opening `[`:
   8335 
   8336 ```````````````````````````````` example
   8337 !\[foo]
   8338 
   8339 [foo]: /url "title"
   8340 .
   8341 <p>![foo]</p>
   8342 ````````````````````````````````
   8343 
   8344 
   8345 If you want a link after a literal `!`, backslash-escape the
   8346 `!`:
   8347 
   8348 ```````````````````````````````` example
   8349 \![foo]
   8350 
   8351 [foo]: /url "title"
   8352 .
   8353 <p>!<a href="/url" title="title">foo</a></p>
   8354 ````````````````````````````````
   8355 
   8356 
   8357 ## Autolinks
   8358 
   8359 [Autolink](@)s are absolute URIs and email addresses inside
   8360 `<` and `>`. They are parsed as links, with the URL or email address
   8361 as the link label.
   8362 
   8363 A [URI autolink](@) consists of `<`, followed by an
   8364 [absolute URI] not containing `<`, followed by `>`.  It is parsed as
   8365 a link to the URI, with the URI as the link's label.
   8366 
   8367 An [absolute URI](@),
   8368 for these purposes, consists of a [scheme] followed by a colon (`:`)
   8369 followed by zero or more characters other than ASCII
   8370 [whitespace] and control characters, `<`, and `>`.  If
   8371 the URI includes these characters, they must be percent-encoded
   8372 (e.g. `%20` for a space).
   8373 
   8374 For purposes of this spec, a [scheme](@) is any sequence
   8375 of 2--32 characters beginning with an ASCII letter and followed
   8376 by any combination of ASCII letters, digits, or the symbols plus
   8377 ("+"), period ("."), or hyphen ("-").
   8378 
   8379 Here are some valid autolinks:
   8380 
   8381 ```````````````````````````````` example
   8382 <http://foo.bar.baz>
   8383 .
   8384 <p><a href="http://foo.bar.baz">http://foo.bar.baz</a></p>
   8385 ````````````````````````````````
   8386 
   8387 
   8388 ```````````````````````````````` example
   8389 <http://foo.bar.baz/test?q=hello&id=22&boolean>
   8390 .
   8391 <p><a href="http://foo.bar.baz/test?q=hello&amp;id=22&amp;boolean">http://foo.bar.baz/test?q=hello&amp;id=22&amp;boolean</a></p>
   8392 ````````````````````````````````
   8393 
   8394 
   8395 ```````````````````````````````` example
   8396 <irc://foo.bar:2233/baz>
   8397 .
   8398 <p><a href="irc://foo.bar:2233/baz">irc://foo.bar:2233/baz</a></p>
   8399 ````````````````````````````````
   8400 
   8401 
   8402 Uppercase is also fine:
   8403 
   8404 ```````````````````````````````` example
   8405 <MAILTO:FOO@BAR.BAZ>
   8406 .
   8407 <p><a href="MAILTO:FOO@BAR.BAZ">MAILTO:FOO@BAR.BAZ</a></p>
   8408 ````````````````````````````````
   8409 
   8410 
   8411 Note that many strings that count as [absolute URIs] for
   8412 purposes of this spec are not valid URIs, because their
   8413 schemes are not registered or because of other problems
   8414 with their syntax:
   8415 
   8416 ```````````````````````````````` example
   8417 <a+b+c:d>
   8418 .
   8419 <p><a href="a+b+c:d">a+b+c:d</a></p>
   8420 ````````````````````````````````
   8421 
   8422 
   8423 ```````````````````````````````` example
   8424 <made-up-scheme://foo,bar>
   8425 .
   8426 <p><a href="made-up-scheme://foo,bar">made-up-scheme://foo,bar</a></p>
   8427 ````````````````````````````````
   8428 
   8429 
   8430 ```````````````````````````````` example
   8431 <http://../>
   8432 .
   8433 <p><a href="http://../">http://../</a></p>
   8434 ````````````````````````````````
   8435 
   8436 
   8437 ```````````````````````````````` example
   8438 <localhost:5001/foo>
   8439 .
   8440 <p><a href="localhost:5001/foo">localhost:5001/foo</a></p>
   8441 ````````````````````````````````
   8442 
   8443 
   8444 Spaces are not allowed in autolinks:
   8445 
   8446 ```````````````````````````````` example
   8447 <http://foo.bar/baz bim>
   8448 .
   8449 <p>&lt;http://foo.bar/baz bim&gt;</p>
   8450 ````````````````````````````````
   8451 
   8452 
   8453 Backslash-escapes do not work inside autolinks:
   8454 
   8455 ```````````````````````````````` example
   8456 <http://example.com/\[\>
   8457 .
   8458 <p><a href="http://example.com/%5C%5B%5C">http://example.com/\[\</a></p>
   8459 ````````````````````````````````
   8460 
   8461 
   8462 An [email autolink](@)
   8463 consists of `<`, followed by an [email address],
   8464 followed by `>`.  The link's label is the email address,
   8465 and the URL is `mailto:` followed by the email address.
   8466 
   8467 An [email address](@),
   8468 for these purposes, is anything that matches
   8469 the [non-normative regex from the HTML5
   8470 spec](https://html.spec.whatwg.org/multipage/forms.html#e-mail-state-(type=email)):
   8471 
   8472     /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?
   8473     (?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
   8474 
   8475 Examples of email autolinks:
   8476 
   8477 ```````````````````````````````` example
   8478 <foo@bar.example.com>
   8479 .
   8480 <p><a href="mailto:foo@bar.example.com">foo@bar.example.com</a></p>
   8481 ````````````````````````````````
   8482 
   8483 
   8484 ```````````````````````````````` example
   8485 <foo+special@Bar.baz-bar0.com>
   8486 .
   8487 <p><a href="mailto:foo+special@Bar.baz-bar0.com">foo+special@Bar.baz-bar0.com</a></p>
   8488 ````````````````````````````````
   8489 
   8490 
   8491 Backslash-escapes do not work inside email autolinks:
   8492 
   8493 ```````````````````````````````` example
   8494 <foo\+@bar.example.com>
   8495 .
   8496 <p>&lt;foo+@bar.example.com&gt;</p>
   8497 ````````````````````````````````
   8498 
   8499 
   8500 These are not autolinks:
   8501 
   8502 ```````````````````````````````` example
   8503 <>
   8504 .
   8505 <p>&lt;&gt;</p>
   8506 ````````````````````````````````
   8507 
   8508 
   8509 ```````````````````````````````` example
   8510 < http://foo.bar >
   8511 .
   8512 <p>&lt; http://foo.bar &gt;</p>
   8513 ````````````````````````````````
   8514 
   8515 
   8516 ```````````````````````````````` example
   8517 <m:abc>
   8518 .
   8519 <p>&lt;m:abc&gt;</p>
   8520 ````````````````````````````````
   8521 
   8522 
   8523 ```````````````````````````````` example
   8524 <foo.bar.baz>
   8525 .
   8526 <p>&lt;foo.bar.baz&gt;</p>
   8527 ````````````````````````````````
   8528 
   8529 
   8530 ```````````````````````````````` example
   8531 http://example.com
   8532 .
   8533 <p>http://example.com</p>
   8534 ````````````````````````````````
   8535 
   8536 
   8537 ```````````````````````````````` example
   8538 foo@bar.example.com
   8539 .
   8540 <p>foo@bar.example.com</p>
   8541 ````````````````````````````````
   8542 
   8543 
   8544 ## Raw HTML
   8545 
   8546 Text between `<` and `>` that looks like an HTML tag is parsed as a
   8547 raw HTML tag and will be rendered in HTML without escaping.
   8548 Tag and attribute names are not limited to current HTML tags,
   8549 so custom tags (and even, say, DocBook tags) may be used.
   8550 
   8551 Here is the grammar for tags:
   8552 
   8553 A [tag name](@) consists of an ASCII letter
   8554 followed by zero or more ASCII letters, digits, or
   8555 hyphens (`-`).
   8556 
   8557 An [attribute](@) consists of [whitespace],
   8558 an [attribute name], and an optional
   8559 [attribute value specification].
   8560 
   8561 An [attribute name](@)
   8562 consists of an ASCII letter, `_`, or `:`, followed by zero or more ASCII
   8563 letters, digits, `_`, `.`, `:`, or `-`.  (Note:  This is the XML
   8564 specification restricted to ASCII.  HTML5 is laxer.)
   8565 
   8566 An [attribute value specification](@)
   8567 consists of optional [whitespace],
   8568 a `=` character, optional [whitespace], and an [attribute
   8569 value].
   8570 
   8571 An [attribute value](@)
   8572 consists of an [unquoted attribute value],
   8573 a [single-quoted attribute value], or a [double-quoted attribute value].
   8574 
   8575 An [unquoted attribute value](@)
   8576 is a nonempty string of characters not
   8577 including spaces, `"`, `'`, `=`, `<`, `>`, or `` ` ``.
   8578 
   8579 A [single-quoted attribute value](@)
   8580 consists of `'`, zero or more
   8581 characters not including `'`, and a final `'`.
   8582 
   8583 A [double-quoted attribute value](@)
   8584 consists of `"`, zero or more
   8585 characters not including `"`, and a final `"`.
   8586 
   8587 An [open tag](@) consists of a `<` character, a [tag name],
   8588 zero or more [attributes], optional [whitespace], an optional `/`
   8589 character, and a `>` character.
   8590 
   8591 A [closing tag](@) consists of the string `</`, a
   8592 [tag name], optional [whitespace], and the character `>`.
   8593 
   8594 An [HTML comment](@) consists of `<!--` + *text* + `-->`,
   8595 where *text* does not start with `>` or `->`, does not end with `-`,
   8596 and does not contain `--`.  (See the
   8597 [HTML5 spec](http://www.w3.org/TR/html5/syntax.html#comments).)
   8598 
   8599 A [processing instruction](@)
   8600 consists of the string `<?`, a string
   8601 of characters not including the string `?>`, and the string
   8602 `?>`.
   8603 
   8604 A [declaration](@) consists of the
   8605 string `<!`, a name consisting of one or more uppercase ASCII letters,
   8606 [whitespace], a string of characters not including the
   8607 character `>`, and the character `>`.
   8608 
   8609 A [CDATA section](@) consists of
   8610 the string `<![CDATA[`, a string of characters not including the string
   8611 `]]>`, and the string `]]>`.
   8612 
   8613 An [HTML tag](@) consists of an [open tag], a [closing tag],
   8614 an [HTML comment], a [processing instruction], a [declaration],
   8615 or a [CDATA section].
   8616 
   8617 Here are some simple open tags:
   8618 
   8619 ```````````````````````````````` example
   8620 <a><bab><c2c>
   8621 .
   8622 <p><a><bab><c2c></p>
   8623 ````````````````````````````````
   8624 
   8625 
   8626 Empty elements:
   8627 
   8628 ```````````````````````````````` example
   8629 <a/><b2/>
   8630 .
   8631 <p><a/><b2/></p>
   8632 ````````````````````````````````
   8633 
   8634 
   8635 [Whitespace] is allowed:
   8636 
   8637 ```````````````````````````````` example
   8638 <a  /><b2
   8639 data="foo" >
   8640 .
   8641 <p><a  /><b2
   8642 data="foo" ></p>
   8643 ````````````````````````````````
   8644 
   8645 
   8646 With attributes:
   8647 
   8648 ```````````````````````````````` example
   8649 <a foo="bar" bam = 'baz <em>"</em>'
   8650 _boolean zoop:33=zoop:33 />
   8651 .
   8652 <p><a foo="bar" bam = 'baz <em>"</em>'
   8653 _boolean zoop:33=zoop:33 /></p>
   8654 ````````````````````````````````
   8655 
   8656 
   8657 Custom tag names can be used:
   8658 
   8659 ```````````````````````````````` example
   8660 Foo <responsive-image src="foo.jpg" />
   8661 .
   8662 <p>Foo <responsive-image src="foo.jpg" /></p>
   8663 ````````````````````````````````
   8664 
   8665 
   8666 Illegal tag names, not parsed as HTML:
   8667 
   8668 ```````````````````````````````` example
   8669 <33> <__>
   8670 .
   8671 <p>&lt;33&gt; &lt;__&gt;</p>
   8672 ````````````````````````````````
   8673 
   8674 
   8675 Illegal attribute names:
   8676 
   8677 ```````````````````````````````` example
   8678 <a h*#ref="hi">
   8679 .
   8680 <p>&lt;a h*#ref=&quot;hi&quot;&gt;</p>
   8681 ````````````````````````````````
   8682 
   8683 
   8684 Illegal attribute values:
   8685 
   8686 ```````````````````````````````` example
   8687 <a href="hi'> <a href=hi'>
   8688 .
   8689 <p>&lt;a href=&quot;hi'&gt; &lt;a href=hi'&gt;</p>
   8690 ````````````````````````````````
   8691 
   8692 
   8693 Illegal [whitespace]:
   8694 
   8695 ```````````````````````````````` example
   8696 < a><
   8697 foo><bar/ >
   8698 .
   8699 <p>&lt; a&gt;&lt;
   8700 foo&gt;&lt;bar/ &gt;</p>
   8701 ````````````````````````````````
   8702 
   8703 
   8704 Missing [whitespace]:
   8705 
   8706 ```````````````````````````````` example
   8707 <a href='bar'title=title>
   8708 .
   8709 <p>&lt;a href='bar'title=title&gt;</p>
   8710 ````````````````````````````````
   8711 
   8712 
   8713 Closing tags:
   8714 
   8715 ```````````````````````````````` example
   8716 </a></foo >
   8717 .
   8718 <p></a></foo ></p>
   8719 ````````````````````````````````
   8720 
   8721 
   8722 Illegal attributes in closing tag:
   8723 
   8724 ```````````````````````````````` example
   8725 </a href="foo">
   8726 .
   8727 <p>&lt;/a href=&quot;foo&quot;&gt;</p>
   8728 ````````````````````````````````
   8729 
   8730 
   8731 Comments:
   8732 
   8733 ```````````````````````````````` example
   8734 foo <!-- this is a
   8735 comment - with hyphen -->
   8736 .
   8737 <p>foo <!-- this is a
   8738 comment - with hyphen --></p>
   8739 ````````````````````````````````
   8740 
   8741 
   8742 ```````````````````````````````` example
   8743 foo <!-- not a comment -- two hyphens -->
   8744 .
   8745 <p>foo &lt;!-- not a comment -- two hyphens --&gt;</p>
   8746 ````````````````````````````````
   8747 
   8748 
   8749 Not comments:
   8750 
   8751 ```````````````````````````````` example
   8752 foo <!--> foo -->
   8753 
   8754 foo <!-- foo--->
   8755 .
   8756 <p>foo &lt;!--&gt; foo --&gt;</p>
   8757 <p>foo &lt;!-- foo---&gt;</p>
   8758 ````````````````````````````````
   8759 
   8760 
   8761 Processing instructions:
   8762 
   8763 ```````````````````````````````` example
   8764 foo <?php echo $a; ?>
   8765 .
   8766 <p>foo <?php echo $a; ?></p>
   8767 ````````````````````````````````
   8768 
   8769 
   8770 Declarations:
   8771 
   8772 ```````````````````````````````` example
   8773 foo <!ELEMENT br EMPTY>
   8774 .
   8775 <p>foo <!ELEMENT br EMPTY></p>
   8776 ````````````````````````````````
   8777 
   8778 
   8779 CDATA sections:
   8780 
   8781 ```````````````````````````````` example
   8782 foo <![CDATA[>&<]]>
   8783 .
   8784 <p>foo <![CDATA[>&<]]></p>
   8785 ````````````````````````````````
   8786 
   8787 
   8788 Entity and numeric character references are preserved in HTML
   8789 attributes:
   8790 
   8791 ```````````````````````````````` example
   8792 foo <a href="&ouml;">
   8793 .
   8794 <p>foo <a href="&ouml;"></p>
   8795 ````````````````````````````````
   8796 
   8797 
   8798 Backslash escapes do not work in HTML attributes:
   8799 
   8800 ```````````````````````````````` example
   8801 foo <a href="\*">
   8802 .
   8803 <p>foo <a href="\*"></p>
   8804 ````````````````````````````````
   8805 
   8806 
   8807 ```````````````````````````````` example
   8808 <a href="\"">
   8809 .
   8810 <p>&lt;a href=&quot;&quot;&quot;&gt;</p>
   8811 ````````````````````````````````
   8812 
   8813 
   8814 ## Hard line breaks
   8815 
   8816 A line break (not in a code span or HTML tag) that is preceded
   8817 by two or more spaces and does not occur at the end of a block
   8818 is parsed as a [hard line break](@) (rendered
   8819 in HTML as a `<br />` tag):
   8820 
   8821 ```````````````````````````````` example
   8822 foo  
   8823 baz
   8824 .
   8825 <p>foo<br />
   8826 baz</p>
   8827 ````````````````````````````````
   8828 
   8829 
   8830 For a more visible alternative, a backslash before the
   8831 [line ending] may be used instead of two spaces:
   8832 
   8833 ```````````````````````````````` example
   8834 foo\
   8835 baz
   8836 .
   8837 <p>foo<br />
   8838 baz</p>
   8839 ````````````````````````````````
   8840 
   8841 
   8842 More than two spaces can be used:
   8843 
   8844 ```````````````````````````````` example
   8845 foo       
   8846 baz
   8847 .
   8848 <p>foo<br />
   8849 baz</p>
   8850 ````````````````````````````````
   8851 
   8852 
   8853 Leading spaces at the beginning of the next line are ignored:
   8854 
   8855 ```````````````````````````````` example
   8856 foo  
   8857      bar
   8858 .
   8859 <p>foo<br />
   8860 bar</p>
   8861 ````````````````````````````````
   8862 
   8863 
   8864 ```````````````````````````````` example
   8865 foo\
   8866      bar
   8867 .
   8868 <p>foo<br />
   8869 bar</p>
   8870 ````````````````````````````````
   8871 
   8872 
   8873 Line breaks can occur inside emphasis, links, and other constructs
   8874 that allow inline content:
   8875 
   8876 ```````````````````````````````` example
   8877 *foo  
   8878 bar*
   8879 .
   8880 <p><em>foo<br />
   8881 bar</em></p>
   8882 ````````````````````````````````
   8883 
   8884 
   8885 ```````````````````````````````` example
   8886 *foo\
   8887 bar*
   8888 .
   8889 <p><em>foo<br />
   8890 bar</em></p>
   8891 ````````````````````````````````
   8892 
   8893 
   8894 Line breaks do not occur inside code spans
   8895 
   8896 ```````````````````````````````` example
   8897 `code  
   8898 span`
   8899 .
   8900 <p><code>code span</code></p>
   8901 ````````````````````````````````
   8902 
   8903 
   8904 ```````````````````````````````` example
   8905 `code\
   8906 span`
   8907 .
   8908 <p><code>code\ span</code></p>
   8909 ````````````````````````````````
   8910 
   8911 
   8912 or HTML tags:
   8913 
   8914 ```````````````````````````````` example
   8915 <a href="foo  
   8916 bar">
   8917 .
   8918 <p><a href="foo  
   8919 bar"></p>
   8920 ````````````````````````````````
   8921 
   8922 
   8923 ```````````````````````````````` example
   8924 <a href="foo\
   8925 bar">
   8926 .
   8927 <p><a href="foo\
   8928 bar"></p>
   8929 ````````````````````````````````
   8930 
   8931 
   8932 Hard line breaks are for separating inline content within a block.
   8933 Neither syntax for hard line breaks works at the end of a paragraph or
   8934 other block element:
   8935 
   8936 ```````````````````````````````` example
   8937 foo\
   8938 .
   8939 <p>foo\</p>
   8940 ````````````````````````````````
   8941 
   8942 
   8943 ```````````````````````````````` example
   8944 foo  
   8945 .
   8946 <p>foo</p>
   8947 ````````````````````````````````
   8948 
   8949 
   8950 ```````````````````````````````` example
   8951 ### foo\
   8952 .
   8953 <h3>foo\</h3>
   8954 ````````````````````````````````
   8955 
   8956 
   8957 ```````````````````````````````` example
   8958 ### foo  
   8959 .
   8960 <h3>foo</h3>
   8961 ````````````````````````````````
   8962 
   8963 
   8964 ## Soft line breaks
   8965 
   8966 A regular line break (not in a code span or HTML tag) that is not
   8967 preceded by two or more spaces or a backslash is parsed as a
   8968 [softbreak](@).  (A softbreak may be rendered in HTML either as a
   8969 [line ending] or as a space. The result will be the same in
   8970 browsers. In the examples here, a [line ending] will be used.)
   8971 
   8972 ```````````````````````````````` example
   8973 foo
   8974 baz
   8975 .
   8976 <p>foo
   8977 baz</p>
   8978 ````````````````````````````````
   8979 
   8980 
   8981 Spaces at the end of the line and beginning of the next line are
   8982 removed:
   8983 
   8984 ```````````````````````````````` example
   8985 foo 
   8986  baz
   8987 .
   8988 <p>foo
   8989 baz</p>
   8990 ````````````````````````````````
   8991 
   8992 
   8993 A conforming parser may render a soft line break in HTML either as a
   8994 line break or as a space.
   8995 
   8996 A renderer may also provide an option to render soft line breaks
   8997 as hard line breaks.
   8998 
   8999 ## Textual content
   9000 
   9001 Any characters not given an interpretation by the above rules will
   9002 be parsed as plain textual content.
   9003 
   9004 ```````````````````````````````` example
   9005 hello $.;'there
   9006 .
   9007 <p>hello $.;'there</p>
   9008 ````````````````````````````````
   9009 
   9010 
   9011 ```````````````````````````````` example
   9012 Foo χρῆν
   9013 .
   9014 <p>Foo χρῆν</p>
   9015 ````````````````````````````````
   9016 
   9017 
   9018 Internal spaces are preserved verbatim:
   9019 
   9020 ```````````````````````````````` example
   9021 Multiple     spaces
   9022 .
   9023 <p>Multiple     spaces</p>
   9024 ````````````````````````````````
   9025 
   9026 
   9027 <!-- END TESTS -->
   9028 
   9029 # Appendix: A parsing strategy
   9030 
   9031 In this appendix we describe some features of the parsing strategy
   9032 used in the CommonMark reference implementations.
   9033 
   9034 ## Overview
   9035 
   9036 Parsing has two phases:
   9037 
   9038 1. In the first phase, lines of input are consumed and the block
   9039 structure of the document---its division into paragraphs, block quotes,
   9040 list items, and so on---is constructed.  Text is assigned to these
   9041 blocks but not parsed. Link reference definitions are parsed and a
   9042 map of links is constructed.
   9043 
   9044 2. In the second phase, the raw text contents of paragraphs and headings
   9045 are parsed into sequences of Markdown inline elements (strings,
   9046 code spans, links, emphasis, and so on), using the map of link
   9047 references constructed in phase 1.
   9048 
   9049 At each point in processing, the document is represented as a tree of
   9050 **blocks**.  The root of the tree is a `document` block.  The `document`
   9051 may have any number of other blocks as **children**.  These children
   9052 may, in turn, have other blocks as children.  The last child of a block
   9053 is normally considered **open**, meaning that subsequent lines of input
   9054 can alter its contents.  (Blocks that are not open are **closed**.)
   9055 Here, for example, is a possible document tree, with the open blocks
   9056 marked by arrows:
   9057 
   9058 ``` tree
   9059 -> document
   9060   -> block_quote
   9061        paragraph
   9062          "Lorem ipsum dolor\nsit amet."
   9063     -> list (type=bullet tight=true bullet_char=-)
   9064          list_item
   9065            paragraph
   9066              "Qui *quodsi iracundia*"
   9067       -> list_item
   9068         -> paragraph
   9069              "aliquando id"
   9070 ```
   9071 
   9072 ## Phase 1: block structure
   9073 
   9074 Each line that is processed has an effect on this tree.  The line is
   9075 analyzed and, depending on its contents, the document may be altered
   9076 in one or more of the following ways:
   9077 
   9078 1. One or more open blocks may be closed.
   9079 2. One or more new blocks may be created as children of the
   9080    last open block.
   9081 3. Text may be added to the last (deepest) open block remaining
   9082    on the tree.
   9083 
   9084 Once a line has been incorporated into the tree in this way,
   9085 it can be discarded, so input can be read in a stream.
   9086 
   9087 For each line, we follow this procedure:
   9088 
   9089 1. First we iterate through the open blocks, starting with the
   9090 root document, and descending through last children down to the last
   9091 open block.  Each block imposes a condition that the line must satisfy
   9092 if the block is to remain open.  For example, a block quote requires a
   9093 `>` character.  A paragraph requires a non-blank line.
   9094 In this phase we may match all or just some of the open
   9095 blocks.  But we cannot close unmatched blocks yet, because we may have a
   9096 [lazy continuation line].
   9097 
   9098 2.  Next, after consuming the continuation markers for existing
   9099 blocks, we look for new block starts (e.g. `>` for a block quote).
   9100 If we encounter a new block start, we close any blocks unmatched
   9101 in step 1 before creating the new block as a child of the last
   9102 matched block.
   9103 
   9104 3.  Finally, we look at the remainder of the line (after block
   9105 markers like `>`, list markers, and indentation have been consumed).
   9106 This is text that can be incorporated into the last open
   9107 block (a paragraph, code block, heading, or raw HTML).
   9108 
   9109 Setext headings are formed when we see a line of a paragraph
   9110 that is a [setext heading underline].
   9111 
   9112 Reference link definitions are detected when a paragraph is closed;
   9113 the accumulated text lines are parsed to see if they begin with
   9114 one or more reference link definitions.  Any remainder becomes a
   9115 normal paragraph.
   9116 
   9117 We can see how this works by considering how the tree above is
   9118 generated by four lines of Markdown:
   9119 
   9120 ``` markdown
   9121 > Lorem ipsum dolor
   9122 sit amet.
   9123 > - Qui *quodsi iracundia*
   9124 > - aliquando id
   9125 ```
   9126 
   9127 At the outset, our document model is just
   9128 
   9129 ``` tree
   9130 -> document
   9131 ```
   9132 
   9133 The first line of our text,
   9134 
   9135 ``` markdown
   9136 > Lorem ipsum dolor
   9137 ```
   9138 
   9139 causes a `block_quote` block to be created as a child of our
   9140 open `document` block, and a `paragraph` block as a child of
   9141 the `block_quote`.  Then the text is added to the last open
   9142 block, the `paragraph`:
   9143 
   9144 ``` tree
   9145 -> document
   9146   -> block_quote
   9147     -> paragraph
   9148          "Lorem ipsum dolor"
   9149 ```
   9150 
   9151 The next line,
   9152 
   9153 ``` markdown
   9154 sit amet.
   9155 ```
   9156 
   9157 is a "lazy continuation" of the open `paragraph`, so it gets added
   9158 to the paragraph's text:
   9159 
   9160 ``` tree
   9161 -> document
   9162   -> block_quote
   9163     -> paragraph
   9164          "Lorem ipsum dolor\nsit amet."
   9165 ```
   9166 
   9167 The third line,
   9168 
   9169 ``` markdown
   9170 > - Qui *quodsi iracundia*
   9171 ```
   9172 
   9173 causes the `paragraph` block to be closed, and a new `list` block
   9174 opened as a child of the `block_quote`.  A `list_item` is also
   9175 added as a child of the `list`, and a `paragraph` as a child of
   9176 the `list_item`.  The text is then added to the new `paragraph`:
   9177 
   9178 ``` tree
   9179 -> document
   9180   -> block_quote
   9181        paragraph
   9182          "Lorem ipsum dolor\nsit amet."
   9183     -> list (type=bullet tight=true bullet_char=-)
   9184       -> list_item
   9185         -> paragraph
   9186              "Qui *quodsi iracundia*"
   9187 ```
   9188 
   9189 The fourth line,
   9190 
   9191 ``` markdown
   9192 > - aliquando id
   9193 ```
   9194 
   9195 causes the `list_item` (and its child the `paragraph`) to be closed,
   9196 and a new `list_item` opened up as child of the `list`.  A `paragraph`
   9197 is added as a child of the new `list_item`, to contain the text.
   9198 We thus obtain the final tree:
   9199 
   9200 ``` tree
   9201 -> document
   9202   -> block_quote
   9203        paragraph
   9204          "Lorem ipsum dolor\nsit amet."
   9205     -> list (type=bullet tight=true bullet_char=-)
   9206          list_item
   9207            paragraph
   9208              "Qui *quodsi iracundia*"
   9209       -> list_item
   9210         -> paragraph
   9211              "aliquando id"
   9212 ```
   9213 
   9214 ## Phase 2: inline structure
   9215 
   9216 Once all of the input has been parsed, all open blocks are closed.
   9217 
   9218 We then "walk the tree," visiting every node, and parse raw
   9219 string contents of paragraphs and headings as inlines.  At this
   9220 point we have seen all the link reference definitions, so we can
   9221 resolve reference links as we go.
   9222 
   9223 ``` tree
   9224 document
   9225   block_quote
   9226     paragraph
   9227       str "Lorem ipsum dolor"
   9228       softbreak
   9229       str "sit amet."
   9230     list (type=bullet tight=true bullet_char=-)
   9231       list_item
   9232         paragraph
   9233           str "Qui "
   9234           emph
   9235             str "quodsi iracundia"
   9236       list_item
   9237         paragraph
   9238           str "aliquando id"
   9239 ```
   9240 
   9241 Notice how the [line ending] in the first paragraph has
   9242 been parsed as a `softbreak`, and the asterisks in the first list item
   9243 have become an `emph`.
   9244 
   9245 ### An algorithm for parsing nested emphasis and links
   9246 
   9247 By far the trickiest part of inline parsing is handling emphasis,
   9248 strong emphasis, links, and images.  This is done using the following
   9249 algorithm.
   9250 
   9251 When we're parsing inlines and we hit either
   9252 
   9253 - a run of `*` or `_` characters, or
   9254 - a `[` or `![`
   9255 
   9256 we insert a text node with these symbols as its literal content, and we
   9257 add a pointer to this text node to the [delimiter stack](@).
   9258 
   9259 The [delimiter stack] is a doubly linked list.  Each
   9260 element contains a pointer to a text node, plus information about
   9261 
   9262 - the type of delimiter (`[`, `![`, `*`, `_`)
   9263 - the number of delimiters,
   9264 - whether the delimiter is "active" (all are active to start), and
   9265 - whether the delimiter is a potential opener, a potential closer,
   9266   or both (which depends on what sort of characters precede
   9267   and follow the delimiters).
   9268 
   9269 When we hit a `]` character, we call the *look for link or image*
   9270 procedure (see below).
   9271 
   9272 When we hit the end of the input, we call the *process emphasis*
   9273 procedure (see below), with `stack_bottom` = NULL.
   9274 
   9275 #### *look for link or image*
   9276 
   9277 Starting at the top of the delimiter stack, we look backwards
   9278 through the stack for an opening `[` or `![` delimiter.
   9279 
   9280 - If we don't find one, we return a literal text node `]`.
   9281 
   9282 - If we do find one, but it's not *active*, we remove the inactive
   9283   delimiter from the stack, and return a literal text node `]`.
   9284 
   9285 - If we find one and it's active, then we parse ahead to see if
   9286   we have an inline link/image, reference link/image, compact reference
   9287   link/image, or shortcut reference link/image.
   9288 
   9289   + If we don't, then we remove the opening delimiter from the
   9290     delimiter stack and return a literal text node `]`.
   9291 
   9292   + If we do, then
   9293 
   9294     * We return a link or image node whose children are the inlines
   9295       after the text node pointed to by the opening delimiter.
   9296 
   9297     * We run *process emphasis* on these inlines, with the `[` opener
   9298       as `stack_bottom`.
   9299 
   9300     * We remove the opening delimiter.
   9301 
   9302     * If we have a link (and not an image), we also set all
   9303       `[` delimiters before the opening delimiter to *inactive*.  (This
   9304       will prevent us from getting links within links.)
   9305 
   9306 #### *process emphasis*
   9307 
   9308 Parameter `stack_bottom` sets a lower bound to how far we
   9309 descend in the [delimiter stack].  If it is NULL, we can
   9310 go all the way to the bottom.  Otherwise, we stop before
   9311 visiting `stack_bottom`.
   9312 
   9313 Let `current_position` point to the element on the [delimiter stack]
   9314 just above `stack_bottom` (or the first element if `stack_bottom`
   9315 is NULL).
   9316 
   9317 We keep track of the `openers_bottom` for each delimiter
   9318 type (`*`, `_`).  Initialize this to `stack_bottom`.
   9319 
   9320 Then we repeat the following until we run out of potential
   9321 closers:
   9322 
   9323 - Move `current_position` forward in the delimiter stack (if needed)
   9324   until we find the first potential closer with delimiter `*` or `_`.
   9325   (This will be the potential closer closest
   9326   to the beginning of the input -- the first one in parse order.)
   9327 
   9328 - Now, look back in the stack (staying above `stack_bottom` and
   9329   the `openers_bottom` for this delimiter type) for the
   9330   first matching potential opener ("matching" means same delimiter).
   9331 
   9332 - If one is found:
   9333 
   9334   + Figure out whether we have emphasis or strong emphasis:
   9335     if both closer and opener spans have length >= 2, we have
   9336     strong, otherwise regular.
   9337 
   9338   + Insert an emph or strong emph node accordingly, after
   9339     the text node corresponding to the opener.
   9340 
   9341   + Remove any delimiters between the opener and closer from
   9342     the delimiter stack.
   9343 
   9344   + Remove 1 (for regular emph) or 2 (for strong emph) delimiters
   9345     from the opening and closing text nodes.  If they become empty
   9346     as a result, remove them and remove the corresponding element
   9347     of the delimiter stack.  If the closing node is removed, reset
   9348     `current_position` to the next element in the stack.
   9349 
   9350 - If none in found:
   9351 
   9352   + Set `openers_bottom` to the element before `current_position`.
   9353     (We know that there are no openers for this kind of closer up to and
   9354     including this point, so this puts a lower bound on future searches.)
   9355 
   9356   + If the closer at `current_position` is not a potential opener,
   9357     remove it from the delimiter stack (since we know it can't
   9358     be a closer either).
   9359 
   9360   + Advance `current_position` to the next element in the stack.
   9361 
   9362 After we're done, we remove all delimiters above `stack_bottom` from the
   9363 delimiter stack.
   9364