| spec.txt | spec.txt | |||
|---|---|---|---|---|
| --- | --- | |||
| title: CommonMark Spec | title: CommonMark Spec | |||
| author: John MacFarlane | author: John MacFarlane | |||
| version: 0.24 | version: 0.25 | |||
| date: '2016-01-12' | date: '2016-03-24' | |||
| license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' | license: '[CC-BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)' | |||
| ... | ... | |||
| # Introduction | # Introduction | |||
| ## What is Markdown? | ## What is Markdown? | |||
| Markdown is a plain text format for writing structured documents, | Markdown is a plain text format for writing structured documents, | |||
| based on conventions used for indicating formatting in email and | based on conventions used for indicating formatting in email and | |||
| usenet posts. It was developed in 2004 by John Gruber, who wrote | usenet posts. It was developed in 2004 by John Gruber, who wrote | |||
| skipping to change at line 302 | skipping to change at line 302 | |||
| . | . | |||
| <ul> | <ul> | |||
| <li> | <li> | |||
| <p>foo</p> | <p>foo</p> | |||
| <p>bar</p> | <p>bar</p> | |||
| </li> | </li> | |||
| </ul> | </ul> | |||
| ```````````````````````````````` | ```````````````````````````````` | |||
| ```````````````````````````````` example | ```````````````````````````````` example | |||
| >→foo→bar | - foo | |||
| →→bar | ||||
| . | ||||
| <ul> | ||||
| <li> | ||||
| <p>foo</p> | ||||
| <pre><code> bar | ||||
| </code></pre> | ||||
| </li> | ||||
| </ul> | ||||
| ```````````````````````````````` | ||||
| ```````````````````````````````` example | ||||
| >→→foo | ||||
| . | . | |||
| <blockquote> | <blockquote> | |||
| <p>foo→bar</p> | <pre><code> foo | |||
| </code></pre> | ||||
| </blockquote> | </blockquote> | |||
| ```````````````````````````````` | ```````````````````````````````` | |||
| ```````````````````````````````` example | ```````````````````````````````` example | |||
| -→→foo | ||||
| . | ||||
| <ul> | ||||
| <li> | ||||
| <pre><code> foo | ||||
| </code></pre> | ||||
| </li> | ||||
| </ul> | ||||
| ```````````````````````````````` | ||||
| ```````````````````````````````` example | ||||
| foo | foo | |||
| →bar | →bar | |||
| . | . | |||
| <pre><code>foo | <pre><code>foo | |||
| bar | bar | |||
| </code></pre> | </code></pre> | |||
| ```````````````````````````````` | ```````````````````````````````` | |||
| ```````````````````````````````` example | ||||
| - foo | ||||
| - bar | ||||
| → - baz | ||||
| . | ||||
| <ul> | ||||
| <li>foo | ||||
| <ul> | ||||
| <li>bar | ||||
| <ul> | ||||
| <li>baz</li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| </ul> | ||||
| ```````````````````````````````` | ||||
| ## Insecure characters | ## Insecure characters | |||
| For security reasons, the Unicode character `U+0000` must be replaced | For security reasons, the Unicode character `U+0000` must be replaced | |||
| with the REPLACEMENT CHARACTER (`U+FFFD`). | with the REPLACEMENT CHARACTER (`U+FFFD`). | |||
| # Blocks and inlines | # Blocks and inlines | |||
| We can think of a document as a sequence of | We can think of a document as a sequence of | |||
| [blocks](@)---structural elements like paragraphs, block | [blocks](@)---structural elements like paragraphs, block | |||
| quotations, lists, headings, rules, and code blocks. Some blocks (like | quotations, lists, headings, rules, and code blocks. Some blocks (like | |||
| skipping to change at line 1137 | skipping to change at line 1181 | |||
| baz | baz | |||
| . | . | |||
| <p>Foo | <p>Foo | |||
| bar</p> | bar</p> | |||
| <hr /> | <hr /> | |||
| <p>baz</p> | <p>baz</p> | |||
| ```````````````````````````````` | ```````````````````````````````` | |||
| or use a thematic break that cannot count as a [setext heading | or use a thematic break that cannot count as a [setext heading | |||
| line], such as | underline], such as | |||
| ```````````````````````````````` example | ```````````````````````````````` example | |||
| Foo | Foo | |||
| bar | bar | |||
| * * * | * * * | |||
| baz | baz | |||
| . | . | |||
| <p>Foo | <p>Foo | |||
| bar</p> | bar</p> | |||
| <hr /> | <hr /> | |||
| skipping to change at line 8284 | skipping to change at line 8328 | |||
| If we encounter a new block start, we close any blocks unmatched | If we encounter a new block start, we close any blocks unmatched | |||
| in step 1 before creating the new block as a child of the last | in step 1 before creating the new block as a child of the last | |||
| matched block. | matched block. | |||
| 3. Finally, we look at the remainder of the line (after block | 3. Finally, we look at the remainder of the line (after block | |||
| markers like `>`, list markers, and indentation have been consumed). | markers like `>`, list markers, and indentation have been consumed). | |||
| This is text that can be incorporated into the last open | This is text that can be incorporated into the last open | |||
| block (a paragraph, code block, heading, or raw HTML). | block (a paragraph, code block, heading, or raw HTML). | |||
| Setext headings are formed when we see a line of a paragraph | Setext headings are formed when we see a line of a paragraph | |||
| that is a setext heading line. | that is a [setext heading underline]. | |||
| Reference link definitions are detected when a paragraph is closed; | Reference link definitions are detected when a paragraph is closed; | |||
| the accumulated text lines are parsed to see if they begin with | the accumulated text lines are parsed to see if they begin with | |||
| one or more reference link definitions. Any remainder becomes a | one or more reference link definitions. Any remainder becomes a | |||
| normal paragraph. | normal paragraph. | |||
| We can see how this works by considering how the tree above is | We can see how this works by considering how the tree above is | |||
| generated by four lines of Markdown: | generated by four lines of Markdown: | |||
| ``` markdown | ``` markdown | |||
| End of changes. 7 change blocks. | ||||
| 6 lines changed or deleted | 50 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||