github.com/anakojm/hugo-katex@v0.0.0-20231023141351-42d6f5de9c0b/hugolib/testdata/what-is-markdown.md (about)

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