diff --git a/example/main.go b/example/main.go index 3197cb0..08287be 100644 --- a/example/main.go +++ b/example/main.go @@ -58,10 +58,10 @@ func main() { html_flags |= blackfriday.HTML_SMARTYPANTS_LATEX_DASHES // render the data into HTML (comment this out to deselect HTML) - renderer := blackfriday.HtmlRenderer(html_flags) + renderer := blackfriday.HtmlRenderer(html_flags) - // render the data into LaTeX (uncomment to select LaTeX) - //renderer := blackfriday.LatexRenderer(0) + // render the data into LaTeX (uncomment to select LaTeX) + //renderer := blackfriday.LatexRenderer(0) output := blackfriday.Markdown(input, renderer, extensions) diff --git a/upskirtref/Amps and angle encoding_upskirt_ref.html b/upskirtref/Amps and angle encoding.html old mode 100755 new mode 100644 similarity index 96% rename from upskirtref/Amps and angle encoding_upskirt_ref.html rename to upskirtref/Amps and angle encoding.html index e9df790..138f4d5 --- a/upskirtref/Amps and angle encoding_upskirt_ref.html +++ b/upskirtref/Amps and angle encoding.html @@ -1,17 +1,17 @@ -
AT&T has an ampersand in their name.
- -AT&T is another way to write it.
- -This & that.
- -4 < 5.
- -6 > 5.
- -Here's a link with an ampersand in the URL.
- -Here's a link with an amersand in the link text: AT&T.
- -Here's an inline link.
- -Here's an inline link.
+AT&T has an ampersand in their name.
+ +AT&T is another way to write it.
+ +This & that.
+ +4 < 5.
+ +6 > 5.
+ +Here's a link with an ampersand in the URL.
+ +Here's a link with an amersand in the link text: AT&T.
+ +Here's an inline link.
+ +Here's an inline link.
diff --git a/upskirtref/Amps and angle encoding.text b/upskirtref/Amps and angle encoding.text old mode 100755 new mode 100644 diff --git a/upskirtref/Auto links_upskirt_ref.html b/upskirtref/Auto links.html old mode 100755 new mode 100644 similarity index 97% rename from upskirtref/Auto links_upskirt_ref.html rename to upskirtref/Auto links.html index e084c36..c50507f --- a/upskirtref/Auto links_upskirt_ref.html +++ b/upskirtref/Auto links.html @@ -1,16 +1,16 @@ -Link: http://example.com/.
- -With an ampersand: http://example.com/?foo=1&bar=2
- ---Blockquoted: http://example.com/
-
Auto-links should not occur here: <http://example.com/>
or here: <http://example.com/>
-
+Link: http://example.com/.
+ +With an ampersand: http://example.com/?foo=1&bar=2
+ +++Blockquoted: http://example.com/
+
Auto-links should not occur here: <http://example.com/>
or here: <http://example.com/>
+
diff --git a/upskirtref/Auto links.text b/upskirtref/Auto links.text
old mode 100755
new mode 100644
diff --git a/upskirtref/Backslash escapes_upskirt_ref.html b/upskirtref/Backslash escapes.html
old mode 100755
new mode 100644
similarity index 93%
rename from upskirtref/Backslash escapes_upskirt_ref.html
rename to upskirtref/Backslash escapes.html
index e9ef7af..483cbdc
--- a/upskirtref/Backslash escapes_upskirt_ref.html
+++ b/upskirtref/Backslash escapes.html
@@ -1,117 +1,117 @@
-These should all get escaped:
- -Backslash: \
- -Backtick: `
- -Asterisk: *
- -Underscore: _
- -Left brace: {
- -Right brace: }
- -Left bracket: [
- -Right bracket: ]
- -Left paren: (
- -Right paren: )
- -Greater-than: >
- -Hash: #
- -Period: .
- -Bang: !
- -Plus: +
- -Minus: -
- -These should not, because they occur within a code block:
- -Backslash: \\
-
-Backtick: \`
-
-Asterisk: \*
-
-Underscore: \_
-
-Left brace: \{
-
-Right brace: \}
-
-Left bracket: \[
-
-Right bracket: \]
-
-Left paren: \(
-
-Right paren: \)
-
-Greater-than: \>
-
-Hash: \#
-
-Period: \.
-
-Bang: \!
-
-Plus: \+
-
-Minus: \-
-
-
-Nor should these, which occur in code spans:
- -Backslash: \\
Backtick: \`
Asterisk: \*
Underscore: \_
Left brace: \{
Right brace: \}
Left bracket: \[
Right bracket: \]
Left paren: \(
Right paren: \)
Greater-than: \>
Hash: \#
Period: \.
Bang: \!
Plus: \+
Minus: \-
These should get escaped, even though they're matching pairs for -other Markdown constructs:
- -*asterisks*
- -_underscores_
- -`backticks`
- -This is a code span with a literal backslash-backtick sequence: \`
This is a tag with unescaped backticks bar.
- -This is a tag with backslashes bar.
+These should all get escaped:
+ +Backslash: \
+ +Backtick: `
+ +Asterisk: *
+ +Underscore: _
+ +Left brace: {
+ +Right brace: }
+ +Left bracket: [
+ +Right bracket: ]
+ +Left paren: (
+ +Right paren: )
+ +Greater-than: >
+ +Hash: #
+ +Period: .
+ +Bang: !
+ +Plus: +
+ +Minus: -
+ +These should not, because they occur within a code block:
+ +Backslash: \\
+
+Backtick: \`
+
+Asterisk: \*
+
+Underscore: \_
+
+Left brace: \{
+
+Right brace: \}
+
+Left bracket: \[
+
+Right bracket: \]
+
+Left paren: \(
+
+Right paren: \)
+
+Greater-than: \>
+
+Hash: \#
+
+Period: \.
+
+Bang: \!
+
+Plus: \+
+
+Minus: \-
+
+
+Nor should these, which occur in code spans:
+ +Backslash: \\
Backtick: \`
Asterisk: \*
Underscore: \_
Left brace: \{
Right brace: \}
Left bracket: \[
Right bracket: \]
Left paren: \(
Right paren: \)
Greater-than: \>
Hash: \#
Period: \.
Bang: \!
Plus: \+
Minus: \-
These should get escaped, even though they're matching pairs for +other Markdown constructs:
+ +*asterisks*
+ +_underscores_
+ +`backticks`
+ +This is a code span with a literal backslash-backtick sequence: \`
This is a tag with unescaped backticks bar.
+ +This is a tag with backslashes bar.
diff --git a/upskirtref/Backslash escapes.text b/upskirtref/Backslash escapes.text old mode 100755 new mode 100644 diff --git a/upskirtref/Blockquotes with code blocks_upskirt_ref.html b/upskirtref/Blockquotes with code blocks.html old mode 100755 new mode 100644 similarity index 93% rename from upskirtref/Blockquotes with code blocks_upskirt_ref.html rename to upskirtref/Blockquotes with code blocks.html index 113e797..fa64335 --- a/upskirtref/Blockquotes with code blocks_upskirt_ref.html +++ b/upskirtref/Blockquotes with code blocks.html @@ -1,15 +1,15 @@ --Example:
- -- -sub status { - print "working"; -} -
Or:
- -+sub status { - return "working"; -} -
+\ No newline at end of file diff --git a/upskirtref/Blockquotes with code blocks.text b/upskirtref/Blockquotes with code blocks.text old mode 100755 new mode 100644 diff --git a/upskirtref/Code Blocks_upskirt_ref.html b/upskirtref/Code Blocks.html old mode 100755 new mode 100644 similarity index 94% rename from upskirtref/Code Blocks_upskirt_ref.html rename to upskirtref/Code Blocks.html index 806a203..32703f5 --- a/upskirtref/Code Blocks_upskirt_ref.html +++ b/upskirtref/Code Blocks.html @@ -1,18 +1,18 @@ -Example:
+ ++ +sub status { + print "working"; +} +
Or:
+ +sub status { + return "working"; +} +
- -code block on the first line -
Regular text.
- -- -code block indented by spaces -
Regular text.
- -- -the lines in this block -all contain trailing spaces -
Regular Text.
- -+code block on the last line -
+ +code block on the first line +
Regular text.
+ ++ +code block indented by spaces +
Regular text.
+ ++ +the lines in this block +all contain trailing spaces +
Regular Text.
+ +diff --git a/upskirtref/Code Blocks.text b/upskirtref/Code Blocks.text old mode 100755 new mode 100644 diff --git a/upskirtref/Code Spans_upskirt_ref.html b/upskirtref/Code Spans.html old mode 100755 new mode 100644 similarity index 97% rename from upskirtref/Code Spans_upskirt_ref.html rename to upskirtref/Code Spans.html index aa7375a..ef85f95 --- a/upskirtref/Code Spans_upskirt_ref.html +++ b/upskirtref/Code Spans.html @@ -1,5 +1,5 @@ -code block on the last line +
- -
<test a="
content of attribute">
Fix for backticks within HTML tag: like this
- -Here's how you put
+`backticks`
in a code span.+ +
<test a="
content of attribute">
Fix for backticks within HTML tag: like this
+ +Here's how you put
diff --git a/upskirtref/Code Spans.text b/upskirtref/Code Spans.text old mode 100755 new mode 100644 diff --git a/upskirtref/Hard-wrapped paragraphs with list-like lines_upskirt_ref.html b/upskirtref/Hard-wrapped paragraphs with list-like lines.html old mode 100755 new mode 100644 similarity index 96% rename from upskirtref/Hard-wrapped paragraphs with list-like lines_upskirt_ref.html rename to upskirtref/Hard-wrapped paragraphs with list-like lines.html index c7a7277..e21ac79 --- a/upskirtref/Hard-wrapped paragraphs with list-like lines_upskirt_ref.html +++ b/upskirtref/Hard-wrapped paragraphs with list-like lines.html @@ -1,8 +1,8 @@ -`backticks`
in a code span.In Markdown 1.0.0 and earlier. Version -8. This line turns into a list item. -Because a hard-wrapped line in the -middle of a paragraph looked like a -list item.
- -Here's one with a bullet. -* criminey.
+In Markdown 1.0.0 and earlier. Version +8. This line turns into a list item. +Because a hard-wrapped line in the +middle of a paragraph looked like a +list item.
+ +Here's one with a bullet. +* criminey.
diff --git a/upskirtref/Hard-wrapped paragraphs with list-like lines.text b/upskirtref/Hard-wrapped paragraphs with list-like lines.text old mode 100755 new mode 100644 diff --git a/upskirtref/Horizontal rules_upskirt_ref.html b/upskirtref/Horizontal rules.html old mode 100755 new mode 100644 similarity index 84% rename from upskirtref/Horizontal rules_upskirt_ref.html rename to upskirtref/Horizontal rules.html index 8abf73e..e60d4ba --- a/upskirtref/Horizontal rules_upskirt_ref.html +++ b/upskirtref/Horizontal rules.html @@ -1,71 +1,71 @@ -Dashes:
- -
- -
- -
- -
- -- ---- -
- -
- -
- -
- -- -- - - -
Asterisks:
- -
- -
- -
- -
- -- -*** -
- -
- -
- -
- -- -* * * -
Underscores:
- -
- -
- -
- -
- -- -___ -
- -
- -
- -
- -+_ _ _ -
Dashes:
+ +
+ +
+ +
+ +
+ ++ +--- +
+ +
+ +
+ +
+ ++ +- - - +
Asterisks:
+ +
+ +
+ +
+ +
+ ++ +*** +
+ +
+ +
+ +
+ ++ +* * * +
Underscores:
+ +
+ +
+ +
+ +
+ ++ +___ +
+ +
+ +
+ +
+ +diff --git a/upskirtref/Horizontal rules.text b/upskirtref/Horizontal rules.text old mode 100755 new mode 100644 diff --git a/upskirtref/Inline HTML (Advanced)_upskirt_ref.html b/upskirtref/Inline HTML (Advanced).html old mode 100755 new mode 100644 similarity index 91% rename from upskirtref/Inline HTML (Advanced)_upskirt_ref.html rename to upskirtref/Inline HTML (Advanced).html index 9af3543..3af9caf --- a/upskirtref/Inline HTML (Advanced)_upskirt_ref.html +++ b/upskirtref/Inline HTML (Advanced).html @@ -1,15 +1,15 @@ -_ _ _ +
Simple block on one line:
- -foo- -And nested without indentation:
- --+---foo -- -bar-Simple block on one line:
+ +foo+ +And nested without indentation:
+ ++diff --git a/upskirtref/Inline HTML (Advanced).text b/upskirtref/Inline HTML (Advanced).text old mode 100755 new mode 100644 diff --git a/upskirtref/Inline HTML (Simple)_upskirt_ref.html b/upskirtref/Inline HTML (Simple).html old mode 100755 new mode 100644 similarity index 91% rename from upskirtref/Inline HTML (Simple)_upskirt_ref.html rename to upskirtref/Inline HTML (Simple).html index eeb873d..6bf78f8 --- a/upskirtref/Inline HTML (Simple)_upskirt_ref.html +++ b/upskirtref/Inline HTML (Simple).html @@ -1,72 +1,72 @@ -+++foo ++ +bar+Here's a simple block:
- -- foo -- -This should be a code block, though:
- -- -<div> - foo -</div> -
As should this:
- -- -<div>foo</div> -
Now, nested:
- --- ---- foo --This should just be an HTML comment:
- - - -Multiline:
- - - -Code block:
- -- -<!-- Comment --> -
Just plain comment, with trailing spaces on the line:
- - - -Code:
- -- -<hr /> -
Hr's:
- -
- -
- -
- -
- -
- -
- -
- -
- -
+Here's a simple block:
+ ++ foo ++ +This should be a code block, though:
+ ++ +<div> + foo +</div> +
As should this:
+ ++ +<div>foo</div> +
Now, nested:
+ +++ ++++ foo ++This should just be an HTML comment:
+ + + +Multiline:
+ + + +Code block:
+ ++ +<!-- Comment --> +
Just plain comment, with trailing spaces on the line:
+ + + +Code:
+ ++ +<hr /> +
Hr's:
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
diff --git a/upskirtref/Inline HTML (Simple).text b/upskirtref/Inline HTML (Simple).text old mode 100755 new mode 100644 diff --git a/upskirtref/Inline HTML comments_upskirt_ref.html b/upskirtref/Inline HTML comments.html old mode 100755 new mode 100644 similarity index 93% rename from upskirtref/Inline HTML comments_upskirt_ref.html rename to upskirtref/Inline HTML comments.html index fc353b6..3f167a1 --- a/upskirtref/Inline HTML comments_upskirt_ref.html +++ b/upskirtref/Inline HTML comments.html @@ -1,13 +1,13 @@ -Paragraph one.
- - - - - -Paragraph two.
- - - -The end.
+Paragraph one.
+ + + + + +Paragraph two.
+ + + +The end.
diff --git a/upskirtref/Inline HTML comments.text b/upskirtref/Inline HTML comments.text old mode 100755 new mode 100644 diff --git a/upskirtref/Links, inline style_upskirt_ref.html b/upskirtref/Links, inline style.html old mode 100755 new mode 100644 similarity index 97% rename from upskirtref/Links, inline style_upskirt_ref.html rename to upskirtref/Links, inline style.html index ec5845f..f36607d --- a/upskirtref/Links, inline style_upskirt_ref.html +++ b/upskirtref/Links, inline style.html @@ -1,11 +1,11 @@ -Just a URL.
- - - - - - - - - - +Just a URL.
+ + + + + + + + + + diff --git a/upskirtref/Links, inline style.text b/upskirtref/Links, inline style.text old mode 100755 new mode 100644 diff --git a/upskirtref/Links, reference style_upskirt_ref.html b/upskirtref/Links, reference style.html old mode 100755 new mode 100644 similarity index 95% rename from upskirtref/Links, reference style_upskirt_ref.html rename to upskirtref/Links, reference style.html index 35a7a99..1bf6b86 --- a/upskirtref/Links, reference style_upskirt_ref.html +++ b/upskirtref/Links, reference style.html @@ -1,52 +1,52 @@ -Foo bar.
- -Foo bar.
- -Foo bar.
- -With embedded [brackets].
- -Indented once.
- -Indented twice.
- -Indented thrice.
- -Indented [four][] times.
- -- -[four]: /url -
- -this should work
- -So should this.
- -And this.
- -And this.
- -And this.
- -But not [that] [].
- -Nor [that][].
- -Nor [that].
- -[Something in brackets like this should work]
- -[Same with this.]
- -In this case, this points to something else.
- -Backslashing should suppress [this] and [this].
- -
- -Here's one where the link -breaks across lines.
- -Here's another where the link -breaks across lines, but with a line-ending space.
+Foo bar.
+ +Foo bar.
+ +Foo bar.
+ +With embedded [brackets].
+ +Indented once.
+ +Indented twice.
+ +Indented thrice.
+ +Indented [four][] times.
+ ++ +[four]: /url +
+ +this should work
+ +So should this.
+ +And this.
+ +And this.
+ +And this.
+ +But not [that] [].
+ +Nor [that][].
+ +Nor [that].
+ +[Something in brackets like this should work]
+ +[Same with this.]
+ +In this case, this points to something else.
+ +Backslashing should suppress [this] and [this].
+ +
+ +Here's one where the link +breaks across lines.
+ +Here's another where the link +breaks across lines, but with a line-ending space.
diff --git a/upskirtref/Links, reference style.text b/upskirtref/Links, reference style.text old mode 100755 new mode 100644 diff --git a/upskirtref/Links, shortcut references_upskirt_ref.html b/upskirtref/Links, shortcut references.html old mode 100755 new mode 100644 similarity index 96% rename from upskirtref/Links, shortcut references_upskirt_ref.html rename to upskirtref/Links, shortcut references.html index 36ac332..bf81e93 --- a/upskirtref/Links, shortcut references_upskirt_ref.html +++ b/upskirtref/Links, shortcut references.html @@ -1,9 +1,9 @@ -This is the simple case.
- -This one has a line -break.
- -This one has a line -break with a line-ending space.
- - +This is the simple case.
+ +This one has a line +break.
+ +This one has a line +break with a line-ending space.
+ + diff --git a/upskirtref/Links, shortcut references.text b/upskirtref/Links, shortcut references.text old mode 100755 new mode 100644 diff --git a/upskirtref/Literal quotes in titles_upskirt_ref.html b/upskirtref/Literal quotes in titles.html old mode 100755 new mode 100644 similarity index 98% rename from upskirtref/Literal quotes in titles_upskirt_ref.html rename to upskirtref/Literal quotes in titles.html index d464ab4..611c1ac --- a/upskirtref/Literal quotes in titles_upskirt_ref.html +++ b/upskirtref/Literal quotes in titles.html @@ -1,3 +1,3 @@ -Foo bar.
- -Foo bar.
+Foo bar.
+ +Foo bar.
diff --git a/upskirtref/Literal quotes in titles.text b/upskirtref/Literal quotes in titles.text old mode 100755 new mode 100644 diff --git a/upskirtref/Markdown Documentation - Basics_upskirt_ref.html b/upskirtref/Markdown Documentation - Basics.html old mode 100755 new mode 100644 similarity index 96% rename from upskirtref/Markdown Documentation - Basics_upskirt_ref.html rename to upskirtref/Markdown Documentation - Basics.html index f36cf4f..ea3a61c --- a/upskirtref/Markdown Documentation - Basics_upskirt_ref.html +++ b/upskirtref/Markdown Documentation - Basics.html @@ -1,314 +1,314 @@ -Markdown: Basics
- - - -Getting the Gist of Markdown's Formatting Syntax
- -This page offers a brief overview of what it's like to use Markdown. -The syntax page provides complete, detailed documentation for -every feature, but Markdown should be very easy to pick up simply by -looking at a few examples of it in action. The examples on this page -are written in a before/after style, showing example syntax and the -HTML output produced by Markdown.
- -It's also helpful to simply try Markdown out; the Dingus is a -web application that allows you type your own Markdown-formatted text -and translate it to XHTML.
- -Note: This document is itself written using Markdown; you -can see the source for it by adding '.text' to the URL.
- -Paragraphs, Headers, Blockquotes
- -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs.
- -Markdown offers two styles of headers: Setext and atx. -Setext-style headers for
- -<h1>
and<h2>
are created by -"underlining" with equal signs (=
) and hyphens (-
), respectively. -To create an atx-style header, you put 1-6 hash marks (#
) at the -beginning of the line -- the number of hashes equals the resulting -HTML header level.Blockquotes are indicated using email-style '
- ->
' angle brackets.Markdown:
- -- -A First Level Header -==================== - -A Second Level Header ---------------------- - -Now is the time for all good men to come to -the aid of their country. This is just a -regular paragraph. - -The quick brown fox jumped over the lazy -dog's back. - -### Header 3 - -> This is a blockquote. -> -> This is the second paragraph in the blockquote. -> -> ## This is an H2 in a blockquote -
Output:
- -- -<h1>A First Level Header</h1> - -<h2>A Second Level Header</h2> - -<p>Now is the time for all good men to come to -the aid of their country. This is just a -regular paragraph.</p> - -<p>The quick brown fox jumped over the lazy -dog's back.</p> - -<h3>Header 3</h3> - -<blockquote> - <p>This is a blockquote.</p> - - <p>This is the second paragraph in the blockquote.</p> - - <h2>This is an H2 in a blockquote</h2> -</blockquote> -
Phrase Emphasis
- -Markdown uses asterisks and underscores to indicate spans of emphasis.
- -Markdown:
- -- -Some of these words *are emphasized*. -Some of these words _are emphasized also_. - -Use two asterisks for **strong emphasis**. -Or, if you prefer, __use two underscores instead__. -
Output:
- -- -<p>Some of these words <em>are emphasized</em>. -Some of these words <em>are emphasized also</em>.</p> - -<p>Use two asterisks for <strong>strong emphasis</strong>. -Or, if you prefer, <strong>use two underscores instead</strong>.</p> -
Lists
- -Unordered (bulleted) lists use asterisks, pluses, and hyphens (
- -*
, -+
, and-
) as list markers. These three markers are -interchangable; this:- -* Candy. -* Gum. -* Booze. -
this:
- -- -+ Candy. -+ Gum. -+ Booze. -
and this:
- -- -- Candy. -- Gum. -- Booze. -
all produce the same output:
- -- -<ul> -<li>Candy.</li> -<li>Gum.</li> -<li>Booze.</li> -</ul> -
Ordered (numbered) lists use regular numbers, followed by periods, as -list markers:
- -- -1. Red -2. Green -3. Blue -
Output:
- -- -<ol> -<li>Red</li> -<li>Green</li> -<li>Blue</li> -</ol> -
If you put blank lines between items, you'll get
- -<p>
tags for the -list item text. You can create multi-paragraph list items by indenting -the paragraphs by 4 spaces or 1 tab:- -* A list item. - - With multiple paragraphs. - -* Another item in the list. -
Output:
- -- -<ul> -<li><p>A list item.</p> -<p>With multiple paragraphs.</p></li> -<li><p>Another item in the list.</p></li> -</ul> -
Links
- -Markdown supports two styles for creating links: inline and -reference. With both styles, you use square brackets to delimit the -text you want to turn into a link.
- -Inline-style links use parentheses immediately after the link text. -For example:
- -- -This is an [example link](http://example.com/). -
Output:
- -- -<p>This is an <a href="http://example.com/"> -example link</a>.</p> -
Optionally, you may include a title attribute in the parentheses:
- -- -This is an [example link](http://example.com/ "With a Title"). -
Output:
- -- -<p>This is an <a href="http://example.com/" title="With a Title"> -example link</a>.</p> -
Reference-style links allow you to refer to your links by names, which -you define elsewhere in your document:
- -- -I get 10 times more traffic from [Google][1] than from -[Yahoo][2] or [MSN][3]. - -[1]: http://google.com/ "Google" -[2]: http://search.yahoo.com/ "Yahoo Search" -[3]: http://search.msn.com/ "MSN Search" -
Output:
- -- -<p>I get 10 times more traffic from <a href="http://google.com/" -title="Google">Google</a> than from <a href="http://search.yahoo.com/" -title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/" -title="MSN Search">MSN</a>.</p> -
The title attribute is optional. Link names may contain letters, -numbers and spaces, but are not case sensitive:
- -- -I start my morning with a cup of coffee and -[The New York Times][NY Times]. - -[ny times]: http://www.nytimes.com/ -
Output:
- -- -<p>I start my morning with a cup of coffee and -<a href="http://www.nytimes.com/">The New York Times</a>.</p> -
Images
- -Image syntax is very much like link syntax.
- -Inline (titles are optional):
- -- -![alt text](/path/to/img.jpg "Title") -
Reference-style:
- -- -![alt text][id] - -[id]: /path/to/img.jpg "Title" -
Both of the above examples produce the same output:
- -- -<img src="/path/to/img.jpg" alt="alt text" title="Title" /> -
Code
- -In a regular paragraph, you can create code span by wrapping text in -backtick quotes. Any ampersands (
- -&
) and angle brackets (<
or ->
) will automatically be translated into HTML entities. This makes -it easy to use Markdown to write about HTML example code:- -I strongly recommend against using any `<blink>` tags. - -I wish SmartyPants used named entities like `—` -instead of decimal-encoded entites like `—`. -
Output:
- -- -<p>I strongly recommend against using any -<code><blink></code> tags.</p> - -<p>I wish SmartyPants used named entities like -<code>&mdash;</code> instead of decimal-encoded -entites like <code>&#8212;</code>.</p> -
To specify an entire block of pre-formatted code, indent every line of -the block by 4 spaces or 1 tab. Just like with code spans,
- -&
,<
, -and>
characters will be escaped automatically.Markdown:
- -- -If you want your page to validate under XHTML 1.0 Strict, -you've got to put paragraph tags in your blockquotes: - - <blockquote> - <p>For example.</p> - </blockquote> -
Output:
- -+<p>If you want your page to validate under XHTML 1.0 Strict, -you've got to put paragraph tags in your blockquotes:</p> - -<pre><code><blockquote> - <p>For example.</p> -</blockquote> -</code></pre> -
Markdown: Basics
+ + + +Getting the Gist of Markdown's Formatting Syntax
+ +This page offers a brief overview of what it's like to use Markdown. +The syntax page provides complete, detailed documentation for +every feature, but Markdown should be very easy to pick up simply by +looking at a few examples of it in action. The examples on this page +are written in a before/after style, showing example syntax and the +HTML output produced by Markdown.
+ +It's also helpful to simply try Markdown out; the Dingus is a +web application that allows you type your own Markdown-formatted text +and translate it to XHTML.
+ +Note: This document is itself written using Markdown; you +can see the source for it by adding '.text' to the URL.
+ +Paragraphs, Headers, Blockquotes
+ +A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs.
+ +Markdown offers two styles of headers: Setext and atx. +Setext-style headers for
+ +<h1>
and<h2>
are created by +"underlining" with equal signs (=
) and hyphens (-
), respectively. +To create an atx-style header, you put 1-6 hash marks (#
) at the +beginning of the line -- the number of hashes equals the resulting +HTML header level.Blockquotes are indicated using email-style '
+ +>
' angle brackets.Markdown:
+ ++ +A First Level Header +==================== + +A Second Level Header +--------------------- + +Now is the time for all good men to come to +the aid of their country. This is just a +regular paragraph. + +The quick brown fox jumped over the lazy +dog's back. + +### Header 3 + +> This is a blockquote. +> +> This is the second paragraph in the blockquote. +> +> ## This is an H2 in a blockquote +
Output:
+ ++ +<h1>A First Level Header</h1> + +<h2>A Second Level Header</h2> + +<p>Now is the time for all good men to come to +the aid of their country. This is just a +regular paragraph.</p> + +<p>The quick brown fox jumped over the lazy +dog's back.</p> + +<h3>Header 3</h3> + +<blockquote> + <p>This is a blockquote.</p> + + <p>This is the second paragraph in the blockquote.</p> + + <h2>This is an H2 in a blockquote</h2> +</blockquote> +
Phrase Emphasis
+ +Markdown uses asterisks and underscores to indicate spans of emphasis.
+ +Markdown:
+ ++ +Some of these words *are emphasized*. +Some of these words _are emphasized also_. + +Use two asterisks for **strong emphasis**. +Or, if you prefer, __use two underscores instead__. +
Output:
+ ++ +<p>Some of these words <em>are emphasized</em>. +Some of these words <em>are emphasized also</em>.</p> + +<p>Use two asterisks for <strong>strong emphasis</strong>. +Or, if you prefer, <strong>use two underscores instead</strong>.</p> +
Lists
+ +Unordered (bulleted) lists use asterisks, pluses, and hyphens (
+ +*
, ++
, and-
) as list markers. These three markers are +interchangable; this:+ +* Candy. +* Gum. +* Booze. +
this:
+ ++ ++ Candy. ++ Gum. ++ Booze. +
and this:
+ ++ +- Candy. +- Gum. +- Booze. +
all produce the same output:
+ ++ +<ul> +<li>Candy.</li> +<li>Gum.</li> +<li>Booze.</li> +</ul> +
Ordered (numbered) lists use regular numbers, followed by periods, as +list markers:
+ ++ +1. Red +2. Green +3. Blue +
Output:
+ ++ +<ol> +<li>Red</li> +<li>Green</li> +<li>Blue</li> +</ol> +
If you put blank lines between items, you'll get
+ +<p>
tags for the +list item text. You can create multi-paragraph list items by indenting +the paragraphs by 4 spaces or 1 tab:+ +* A list item. + + With multiple paragraphs. + +* Another item in the list. +
Output:
+ ++ +<ul> +<li><p>A list item.</p> +<p>With multiple paragraphs.</p></li> +<li><p>Another item in the list.</p></li> +</ul> +
Links
+ +Markdown supports two styles for creating links: inline and +reference. With both styles, you use square brackets to delimit the +text you want to turn into a link.
+ +Inline-style links use parentheses immediately after the link text. +For example:
+ ++ +This is an [example link](http://example.com/). +
Output:
+ ++ +<p>This is an <a href="http://example.com/"> +example link</a>.</p> +
Optionally, you may include a title attribute in the parentheses:
+ ++ +This is an [example link](http://example.com/ "With a Title"). +
Output:
+ ++ +<p>This is an <a href="http://example.com/" title="With a Title"> +example link</a>.</p> +
Reference-style links allow you to refer to your links by names, which +you define elsewhere in your document:
+ ++ +I get 10 times more traffic from [Google][1] than from +[Yahoo][2] or [MSN][3]. + +[1]: http://google.com/ "Google" +[2]: http://search.yahoo.com/ "Yahoo Search" +[3]: http://search.msn.com/ "MSN Search" +
Output:
+ ++ +<p>I get 10 times more traffic from <a href="http://google.com/" +title="Google">Google</a> than from <a href="http://search.yahoo.com/" +title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/" +title="MSN Search">MSN</a>.</p> +
The title attribute is optional. Link names may contain letters, +numbers and spaces, but are not case sensitive:
+ ++ +I start my morning with a cup of coffee and +[The New York Times][NY Times]. + +[ny times]: http://www.nytimes.com/ +
Output:
+ ++ +<p>I start my morning with a cup of coffee and +<a href="http://www.nytimes.com/">The New York Times</a>.</p> +
Images
+ +Image syntax is very much like link syntax.
+ +Inline (titles are optional):
+ ++ +![alt text](/path/to/img.jpg "Title") +
Reference-style:
+ ++ +![alt text][id] + +[id]: /path/to/img.jpg "Title" +
Both of the above examples produce the same output:
+ ++ +<img src="/path/to/img.jpg" alt="alt text" title="Title" /> +
Code
+ +In a regular paragraph, you can create code span by wrapping text in +backtick quotes. Any ampersands (
+ +&
) and angle brackets (<
or +>
) will automatically be translated into HTML entities. This makes +it easy to use Markdown to write about HTML example code:+ +I strongly recommend against using any `<blink>` tags. + +I wish SmartyPants used named entities like `—` +instead of decimal-encoded entites like `—`. +
Output:
+ ++ +<p>I strongly recommend against using any +<code><blink></code> tags.</p> + +<p>I wish SmartyPants used named entities like +<code>&mdash;</code> instead of decimal-encoded +entites like <code>&#8212;</code>.</p> +
To specify an entire block of pre-formatted code, indent every line of +the block by 4 spaces or 1 tab. Just like with code spans,
+ +&
,<
, +and>
characters will be escaped automatically.Markdown:
+ ++ +If you want your page to validate under XHTML 1.0 Strict, +you've got to put paragraph tags in your blockquotes: + + <blockquote> + <p>For example.</p> + </blockquote> +
Output:
+ +diff --git a/upskirtref/Markdown Documentation - Basics.text b/upskirtref/Markdown Documentation - Basics.text old mode 100755 new mode 100644 diff --git a/upskirtref/Markdown Documentation - Syntax_upskirt_ref.html b/upskirtref/Markdown Documentation - Syntax.html old mode 100755 new mode 100644 similarity index 93% rename from upskirtref/Markdown Documentation - Syntax_upskirt_ref.html rename to upskirtref/Markdown Documentation - Syntax.html index d472665..61dde59 --- a/upskirtref/Markdown Documentation - Syntax_upskirt_ref.html +++ b/upskirtref/Markdown Documentation - Syntax.html @@ -1,946 +1,946 @@ -<p>If you want your page to validate under XHTML 1.0 Strict, +you've got to put paragraph tags in your blockquotes:</p> + +<pre><code><blockquote> + <p>For example.</p> +</blockquote> +</code></pre> +
Markdown: Syntax
- - - --
- -- Overview - -
-- Block Elements - -
--
- Paragraphs and Line Breaks
-- Headers
-- Blockquotes
-- Lists
-- Code Blocks
-- Horizontal Rules
-- Span Elements - -
-- Miscellaneous - -
-Note: This document is itself written using Markdown; you -can see the source for it by adding '.text' to the URL.
- -
- -Overview
- -Philosophy
- -Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
- -Readability, however, is emphasized above all else. A Markdown-formatted -document should be publishable as-is, as plain text, without looking -like it's been marked up with tags or formatting instructions. While -Markdown's syntax has been influenced by several existing text-to-HTML -filters -- including Setext, atx, Textile, reStructuredText, -Grutatext, and EtText -- the single biggest source of -inspiration for Markdown's syntax is the format of plain text email.
- -To this end, Markdown's syntax is comprised entirely of punctuation -characters, which punctuation characters have been carefully chosen so -as to look like what they mean. E.g., asterisks around a word actually -look like *emphasis*. Markdown lists look like, well, lists. Even -blockquotes look like quoted passages of text, assuming you've ever -used email.
- -Inline HTML
- -Markdown's syntax is intended for one purpose: to be used as a -format for writing for the web.
- -Markdown is not a replacement for HTML, or even close to it. Its -syntax is very small, corresponding only to a very small subset of -HTML tags. The idea is not to create a syntax that makes it easier -to insert HTML tags. In my opinion, HTML tags are already easy to -insert. The idea for Markdown is to make it easy to read, write, and -edit prose. HTML is a publishing format; Markdown is a writing -format. Thus, Markdown's formatting syntax only addresses issues that -can be conveyed in plain text.
- -For any markup that is not covered by Markdown's syntax, you simply -use HTML itself. There's no need to preface it or delimit it to -indicate that you're switching from Markdown to HTML; you just use -the tags.
- -The only restrictions are that block-level HTML elements -- e.g.
- -<div>
, -<table>
,<pre>
,<p>
, etc. -- must be separated from surrounding -content by blank lines, and the start and end tags of the block should -not be indented with tabs or spaces. Markdown is smart enough not -to add extra (unwanted)<p>
tags around HTML block-level tags.For example, to add an HTML table to a Markdown article:
- -- -This is a regular paragraph. - -<table> - <tr> - <td>Foo</td> - </tr> -</table> - -This is another regular paragraph. -
Note that Markdown formatting syntax is not processed within block-level -HTML tags. E.g., you can't use Markdown-style
- -*emphasis*
inside an -HTML block.Span-level HTML tags -- e.g.
- -<span>
,<cite>
, or<del>
-- can be -used anywhere in a Markdown paragraph, list item, or header. If you -want, you can even use HTML tags instead of Markdown formatting; e.g. if -you'd prefer to use HTML<a>
or<img>
tags instead of Markdown's -link or image syntax, go right ahead.Unlike block-level HTML tags, Markdown syntax is processed within -span-level tags.
- -Automatic Escaping for Special Characters
- -In HTML, there are two characters that demand special treatment:
- -<
-and&
. Left angle brackets are used to start tags; ampersands are -used to denote HTML entities. If you want to use them as literal -characters, you must escape them as entities, e.g.<
, and -&
.Ampersands in particular are bedeviling for web writers. If you want to -write about 'AT&T', you need to write '
- -AT&T
'. You even need to -escape ampersands within URLs. Thus, if you want to link to:- -http://images.google.com/images?num=30&q=larry+bird -
you need to encode the URL as:
- -- -http://images.google.com/images?num=30&q=larry+bird -
in your anchor tag
- -href
attribute. Needless to say, this is easy to -forget, and is probably the single most common source of HTML validation -errors in otherwise well-marked-up web sites.Markdown allows you to use these characters naturally, taking care of -all the necessary escaping for you. If you use an ampersand as part of -an HTML entity, it remains unchanged; otherwise it will be translated -into
- -&
.So, if you want to include a copyright symbol in your article, you can write:
- -- -© -
and Markdown will leave it alone. But if you write:
- -- -AT&T -
Markdown will translate it to:
- -- -AT&T -
Similarly, because Markdown supports inline HTML, if you use -angle brackets as delimiters for HTML tags, Markdown will treat them as -such. But if you write:
- -- -4 < 5 -
Markdown will translate it to:
- -- -4 < 5 -
However, inside Markdown code spans and blocks, angle brackets and -ampersands are always encoded automatically. This makes it easy to use -Markdown to write about HTML code. (As opposed to raw HTML, which is a -terrible format for writing about HTML syntax, because every single
- -<
-and&
in your example code needs to be escaped.)
- -Block Elements
- -Paragraphs and Line Breaks
- -A paragraph is simply one or more consecutive lines of text, separated -by one or more blank lines. (A blank line is any line that looks like a -blank line -- a line containing nothing but spaces or tabs is considered -blank.) Normal paragraphs should not be intended with spaces or tabs.
- -The implication of the "one or more consecutive lines of text" rule is -that Markdown supports "hard-wrapped" text paragraphs. This differs -significantly from most other text-to-HTML formatters (including Movable -Type's "Convert Line Breaks" option) which translate every line break -character in a paragraph into a
- -<br />
tag.When you do want to insert a
- -<br />
break tag using Markdown, you -end a line with two or more spaces, then type return.Yes, this takes a tad more effort to create a
- -<br />
, but a simplistic -"every line break is a<br />
" rule wouldn't work for Markdown. -Markdown's email-style blockquoting and multi-paragraph list items -work best -- and look better -- when you format them with hard breaks.Headers
- -Markdown supports two styles of headers, Setext and atx.
- -Setext-style headers are "underlined" using equal signs (for first-level -headers) and dashes (for second-level headers). For example:
- -- -This is an H1 -============= - -This is an H2 -------------- -
Any number of underlining
- -=
's or-
's will work.Atx-style headers use 1-6 hash characters at the start of the line, -corresponding to header levels 1-6. For example:
- -- -# This is an H1 - -## This is an H2 - -###### This is an H6 -
Optionally, you may "close" atx-style headers. This is purely -cosmetic -- you can use this if you think it looks better. The -closing hashes don't even need to match the number of hashes -used to open the header. (The number of opening hashes -determines the header level.) :
- -- -# This is an H1 # - -## This is an H2 ## - -### This is an H3 ###### -
Blockquotes
- -Markdown uses email-style
- ->
characters for blockquoting. If you're -familiar with quoting passages of text in an email message, then you -know how to create a blockquote in Markdown. It looks best if you hard -wrap the text and put a>
before every line:- -> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, -> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. -> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. -> -> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse -> id sem consectetuer libero luctus adipiscing. -
Markdown allows you to be lazy and only put the
- ->
before the first -line of a hard-wrapped paragraph:- -> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, -consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. -Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. - -> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse -id sem consectetuer libero luctus adipiscing. -
Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by -adding additional levels of
- ->
:- -> This is the first level of quoting. -> -> > This is nested blockquote. -> -> Back to the first level. -
Blockquotes can contain other Markdown elements, including headers, lists, -and code blocks:
- -- -> ## This is a header. -> -> 1. This is the first list item. -> 2. This is the second list item. -> -> Here's some example code: -> -> return shell_exec("echo $input | $markdown_script"); -
Any decent text editor should make email-style quoting easy. For -example, with BBEdit, you can make a selection and choose Increase -Quote Level from the Text menu.
- -Lists
- -Markdown supports ordered (numbered) and unordered (bulleted) lists.
- -Unordered lists use asterisks, pluses, and hyphens -- interchangably --- as list markers:
- -- -* Red -* Green -* Blue -
is equivalent to:
- -- -+ Red -+ Green -+ Blue -
and:
- -- -- Red -- Green -- Blue -
Ordered lists use numbers followed by periods:
- -- -1. Bird -2. McHale -3. Parish -
It's important to note that the actual numbers you use to mark the -list have no effect on the HTML output Markdown produces. The HTML -Markdown produces from the above list is:
- -- -<ol> -<li>Bird</li> -<li>McHale</li> -<li>Parish</li> -</ol> -
If you instead wrote the list in Markdown like this:
- -- -1. Bird -1. McHale -1. Parish -
or even:
- -- -3. Bird -1. McHale -8. Parish -
you'd get the exact same HTML output. The point is, if you want to, -you can use ordinal numbers in your ordered Markdown lists, so that -the numbers in your source match the numbers in your published HTML. -But if you want to be lazy, you don't have to.
- -If you do use lazy list numbering, however, you should still start the -list with the number 1. At some point in the future, Markdown may support -starting ordered lists at an arbitrary number.
- -List markers typically start at the left margin, but may be indented by -up to three spaces. List markers must be followed by one or more spaces -or a tab.
- -To make lists look nice, you can wrap items with hanging indents:
- -- -* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, - viverra nec, fringilla in, laoreet vitae, risus. -* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. - Suspendisse id sem consectetuer libero luctus adipiscing. -
But if you want to be lazy, you don't have to:
- -- -* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. -Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, -viverra nec, fringilla in, laoreet vitae, risus. -* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. -Suspendisse id sem consectetuer libero luctus adipiscing. -
If list items are separated by blank lines, Markdown will wrap the -items in
- -<p>
tags in the HTML output. For example, this input:- -* Bird -* Magic -
will turn into:
- -- -<ul> -<li>Bird</li> -<li>Magic</li> -</ul> -
But this:
- -- -* Bird - -* Magic -
will turn into:
- -- -<ul> -<li><p>Bird</p></li> -<li><p>Magic</p></li> -</ul> -
List items may consist of multiple paragraphs. Each subsequent -paragraph in a list item must be intended by either 4 spaces -or one tab:
- -- -1. This is a list item with two paragraphs. Lorem ipsum dolor - sit amet, consectetuer adipiscing elit. Aliquam hendrerit - mi posuere lectus. - - Vestibulum enim wisi, viverra nec, fringilla in, laoreet - vitae, risus. Donec sit amet nisl. Aliquam semper ipsum - sit amet velit. - -2. Suspendisse id sem consectetuer libero luctus adipiscing. -
It looks nice if you indent every line of the subsequent -paragraphs, but here again, Markdown will allow you to be -lazy:
- -- -* This is a list item with two paragraphs. - - This is the second paragraph in the list item. You're -only required to indent the first line. Lorem ipsum dolor -sit amet, consectetuer adipiscing elit. - -* Another item in the same list. -
To put a blockquote within a list item, the blockquote's
- ->
-delimiters need to be indented:- -* A list item with a blockquote: - - > This is a blockquote - > inside a list item. -
To put a code block within a list item, the code block needs -to be indented twice -- 8 spaces or two tabs:
- -- -* A list item with a code block: - - <code goes here> -
It's worth noting that it's possible to trigger an ordered list by -accident, by writing something like this:
- -- -1986. What a great season. -
In other words, a number-period-space sequence at the beginning of a -line. To avoid this, you can backslash-escape the period:
- -- -1986\. What a great season. -
Code Blocks
- -Pre-formatted code blocks are used for writing about programming or -markup source code. Rather than forming normal paragraphs, the lines -of a code block are interpreted literally. Markdown wraps a code block -in both
- -<pre>
and<code>
tags.To produce a code block in Markdown, simply indent every line of the -block by at least 4 spaces or 1 tab. For example, given this input:
- -- -This is a normal paragraph: - - This is a code block. -
Markdown will generate:
- -- -<p>This is a normal paragraph:</p> - -<pre><code>This is a code block. -</code></pre> -
One level of indentation -- 4 spaces or 1 tab -- is removed from each -line of the code block. For example, this:
- -- -Here is an example of AppleScript: - - tell application "Foo" - beep - end tell -
will turn into:
- -- -<p>Here is an example of AppleScript:</p> - -<pre><code>tell application "Foo" - beep -end tell -</code></pre> -
A code block continues until it reaches a line that is not indented -(or the end of the article).
- -Within a code block, ampersands (
- -&
) and angle brackets (<
and>
) -are automatically converted into HTML entities. This makes it very -easy to include example HTML source code using Markdown -- just paste -it and indent it, and Markdown will handle the hassle of encoding the -ampersands and angle brackets. For example, this:- -<div class="footer"> - © 2004 Foo Corporation - </div> -
will turn into:
- -- -<pre><code><div class="footer"> - &copy; 2004 Foo Corporation -</div> -</code></pre> -
Regular Markdown syntax is not processed within code blocks. E.g., -asterisks are just literal asterisks within a code block. This means -it's also easy to use Markdown to write about Markdown's own syntax.
- -Horizontal Rules
- -You can produce a horizontal rule tag (
- -<hr />
) by placing three or -more hyphens, asterisks, or underscores on a line by themselves. If you -wish, you may use spaces between the hyphens or asterisks. Each of the -following lines will produce a horizontal rule:- -* * * - -*** - -***** - -- - - - ---------------------------------------- - -_ _ _ -
- -Span Elements
- -Links
- -Markdown supports two style of links: inline and reference.
- -In both styles, the link text is delimited by [square brackets].
- -To create an inline link, use a set of regular parentheses immediately -after the link text's closing square bracket. Inside the parentheses, -put the URL where you want the link to point, along with an optional -title for the link, surrounded in quotes. For example:
- -- -This is [an example](http://example.com/ "Title") inline link. - -[This link](http://example.net/) has no title attribute. -
Will produce:
- -- -<p>This is <a href="http://example.com/" title="Title"> -an example</a> inline link.</p> - -<p><a href="http://example.net/">This link</a> has no -title attribute.</p> -
If you're referring to a local resource on the same server, you can -use relative paths:
- -- -See my [About](/about/) page for details. -
Reference-style links use a second set of square brackets, inside -which you place a label of your choosing to identify the link:
- -- -This is [an example][id] reference-style link. -
You can optionally use a space to separate the sets of brackets:
- -- -This is [an example] [id] reference-style link. -
Then, anywhere in the document, you define your link label like this, -on a line by itself:
- -- -[id]: http://example.com/ "Optional Title Here" -
That is:
- --
- -- Square brackets containing the link identifier (optionally -indented from the left margin using up to three spaces);
-- followed by a colon;
-- followed by one or more spaces (or tabs);
-- followed by the URL for the link;
-- optionally followed by a title attribute for the link, enclosed -in double or single quotes.
-The link URL may, optionally, be surrounded by angle brackets:
- -- -[id]: <http://example.com/> "Optional Title Here" -
You can put the title attribute on the next line and use extra spaces -or tabs for padding, which tends to look better with longer URLs:
- -- -[id]: http://example.com/longish/path/to/resource/here - "Optional Title Here" -
Link definitions are only used for creating links during Markdown -processing, and are stripped from your document in the HTML output.
- -Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:
- -- -[link text][a] -[link text][A] -
are equivalent.
- -The implicit link name shortcut allows you to omit the name of the -link, in which case the link text itself is used as the name. -Just use an empty set of square brackets -- e.g., to link the word -"Google" to the google.com web site, you could simply write:
- -- -[Google][] -
And then define the link:
- -- -[Google]: http://google.com/ -
Because link names may contain spaces, this shortcut even works for -multiple words in the link text:
- -- -Visit [Daring Fireball][] for more information. -
And then define the link:
- -- -[Daring Fireball]: http://daringfireball.net/ -
Link definitions can be placed anywhere in your Markdown document. I -tend to put them immediately after each paragraph in which they're -used, but if you want, you can put them all at the end of your -document, sort of like footnotes.
- -Here's an example of reference links in action:
- -- -I get 10 times more traffic from [Google] [1] than from -[Yahoo] [2] or [MSN] [3]. - - [1]: http://google.com/ "Google" - [2]: http://search.yahoo.com/ "Yahoo Search" - [3]: http://search.msn.com/ "MSN Search" -
Using the implicit link name shortcut, you could instead write:
- -- -I get 10 times more traffic from [Google][] than from -[Yahoo][] or [MSN][]. - - [google]: http://google.com/ "Google" - [yahoo]: http://search.yahoo.com/ "Yahoo Search" - [msn]: http://search.msn.com/ "MSN Search" -
Both of the above examples will produce the following HTML output:
- -- -<p>I get 10 times more traffic from <a href="http://google.com/" -title="Google">Google</a> than from -<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a> -or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p> -
For comparison, here is the same paragraph written using -Markdown's inline link style:
- -- -I get 10 times more traffic from [Google](http://google.com/ "Google") -than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or -[MSN](http://search.msn.com/ "MSN Search"). -
The point of reference-style links is not that they're easier to -write. The point is that with reference-style links, your document -source is vastly more readable. Compare the above examples: using -reference-style links, the paragraph itself is only 81 characters -long; with inline-style links, it's 176 characters; and as raw HTML, -it's 234 characters. In the raw HTML, there's more markup than there -is text.
- -With Markdown's reference-style links, a source document much more -closely resembles the final output, as rendered in a browser. By -allowing you to move the markup-related metadata out of the paragraph, -you can add links without interrupting the narrative flow of your -prose.
- -Emphasis
- -Markdown treats asterisks (
- -*
) and underscores (_
) as indicators of -emphasis. Text wrapped with one*
or_
will be wrapped with an -HTML<em>
tag; double*
's or_
's will be wrapped with an HTML -<strong>
tag. E.g., this input:- -*single asterisks* - -_single underscores_ - -**double asterisks** - -__double underscores__ -
will produce:
- -- -<em>single asterisks</em> - -<em>single underscores</em> - -<strong>double asterisks</strong> - -<strong>double underscores</strong> -
You can use whichever style you prefer; the lone restriction is that -the same character must be used to open and close an emphasis span.
- -Emphasis can be used in the middle of a word:
- -- -un*fucking*believable -
But if you surround an
- -*
or_
with spaces, it'll be treated as a -literal asterisk or underscore.To produce a literal asterisk or underscore at a position where it -would otherwise be used as an emphasis delimiter, you can backslash -escape it:
- -- -\*this text is surrounded by literal asterisks\* -
Code
- -To indicate a span of code, wrap it with backtick quotes (
- -`
). -Unlike a pre-formatted code block, a code span indicates code within a -normal paragraph. For example:- -Use the `printf()` function. -
will produce:
- -- -<p>Use the <code>printf()</code> function.</p> -
To include a literal backtick character within a code span, you can use -multiple backticks as the opening and closing delimiters:
- -- -``There is a literal backtick (`) here.`` -
which will produce this:
- -- -<p><code>There is a literal backtick (`) here.</code></p> -
The backtick delimiters surrounding a code span may include spaces -- -one after the opening, one before the closing. This allows you to place -literal backtick characters at the beginning or end of a code span:
- -- -A single backtick in a code span: `` ` `` - -A backtick-delimited string in a code span: `` `foo` `` -
will produce:
- -- -<p>A single backtick in a code span: <code>`</code></p> - -<p>A backtick-delimited string in a code span: <code>`foo`</code></p> -
With a code span, ampersands and angle brackets are encoded as HTML -entities automatically, which makes it easy to include example HTML -tags. Markdown will turn this:
- -- -Please don't use any `<blink>` tags. -
into:
- -- -<p>Please don't use any <code><blink></code> tags.</p> -
You can write this:
- -- -`—` is the decimal-encoded equivalent of `—`. -
to produce:
- -- -<p><code>&#8212;</code> is the decimal-encoded -equivalent of <code>&mdash;</code>.</p> -
Images
- -Admittedly, it's fairly difficult to devise a "natural" syntax for -placing images into a plain text document format.
- -Markdown uses an image syntax that is intended to resemble the syntax -for links, allowing for two styles: inline and reference.
- -Inline image syntax looks like this:
- -- -![Alt text](/path/to/img.jpg) - -![Alt text](/path/to/img.jpg "Optional title") -
That is:
- --
- -- An exclamation mark:
-!
;- followed by a set of square brackets, containing the
-alt
-attribute text for the image;- followed by a set of parentheses, containing the URL or path to -the image, and an optional
-title
attribute enclosed in double -or single quotes.Reference-style image syntax looks like this:
- -- -![Alt text][id] -
Where "id" is the name of a defined image reference. Image references -are defined using syntax identical to link references:
- -- -[id]: url/to/image "Optional title attribute" -
As of this writing, Markdown has no syntax for specifying the -dimensions of an image; if this is important to you, you can simply -use regular HTML
- -<img>
tags.
- -Miscellaneous
- -Automatic Links
- -Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
- -- -<http://example.com/> -
Markdown will turn this into:
- -- -<a href="http://example.com/">http://example.com/</a> -
Automatic links for email addresses work similarly, except that -Markdown will also perform a bit of randomized decimal and hex -entity-encoding to help obscure your address from address-harvesting -spambots. For example, Markdown will turn this:
- -- -<address@example.com> -
into something like this:
- -- -<a href="mailto:addre -ss@example.co -m">address@exa -mple.com</a> -
which will render in a browser as a clickable link to "address@example.com".
- -(This sort of entity-encoding trick will indeed fool many, if not -most, address-harvesting bots, but it definitely won't fool all of -them. It's better than nothing, but an address published in this way -will probably eventually start receiving spam.)
- -Backslash Escapes
- -Markdown allows you to use backslash escapes to generate literal -characters which would otherwise have special meaning in Markdown's -formatting syntax. For example, if you wanted to surround a word with -literal asterisks (instead of an HTML
- -<em>
tag), you can backslashes -before the asterisks, like this:- -\*literal asterisks\* -
Markdown provides backslash escapes for the following characters:
- -+\ backslash -` backtick -* asterisk -_ underscore -{} curly braces -[] square brackets -() parentheses -# hash mark -+ plus sign -- minus sign (hyphen) -. dot -! exclamation mark -
Markdown: Syntax
+ + + ++
+ +- Overview + +
+- Block Elements + +
+- Span Elements + +
+- Miscellaneous + +
+Note: This document is itself written using Markdown; you +can see the source for it by adding '.text' to the URL.
+ +
+ +Overview
+ +Philosophy
+ +Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
+ +Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including Setext, atx, Textile, reStructuredText, +Grutatext, and EtText -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email.
+ +To this end, Markdown's syntax is comprised entirely of punctuation +characters, which punctuation characters have been carefully chosen so +as to look like what they mean. E.g., asterisks around a word actually +look like *emphasis*. Markdown lists look like, well, lists. Even +blockquotes look like quoted passages of text, assuming you've ever +used email.
+ +Inline HTML
+ +Markdown's syntax is intended for one purpose: to be used as a +format for writing for the web.
+ +Markdown is not a replacement for HTML, or even close to it. Its +syntax is very small, corresponding only to a very small subset of +HTML tags. The idea is not to create a syntax that makes it easier +to insert HTML tags. In my opinion, HTML tags are already easy to +insert. The idea for Markdown is to make it easy to read, write, and +edit prose. HTML is a publishing format; Markdown is a writing +format. Thus, Markdown's formatting syntax only addresses issues that +can be conveyed in plain text.
+ +For any markup that is not covered by Markdown's syntax, you simply +use HTML itself. There's no need to preface it or delimit it to +indicate that you're switching from Markdown to HTML; you just use +the tags.
+ +The only restrictions are that block-level HTML elements -- e.g.
+ +<div>
, +<table>
,<pre>
,<p>
, etc. -- must be separated from surrounding +content by blank lines, and the start and end tags of the block should +not be indented with tabs or spaces. Markdown is smart enough not +to add extra (unwanted)<p>
tags around HTML block-level tags.For example, to add an HTML table to a Markdown article:
+ ++ +This is a regular paragraph. + +<table> + <tr> + <td>Foo</td> + </tr> +</table> + +This is another regular paragraph. +
Note that Markdown formatting syntax is not processed within block-level +HTML tags. E.g., you can't use Markdown-style
+ +*emphasis*
inside an +HTML block.Span-level HTML tags -- e.g.
+ +<span>
,<cite>
, or<del>
-- can be +used anywhere in a Markdown paragraph, list item, or header. If you +want, you can even use HTML tags instead of Markdown formatting; e.g. if +you'd prefer to use HTML<a>
or<img>
tags instead of Markdown's +link or image syntax, go right ahead.Unlike block-level HTML tags, Markdown syntax is processed within +span-level tags.
+ +Automatic Escaping for Special Characters
+ +In HTML, there are two characters that demand special treatment:
+ +<
+and&
. Left angle brackets are used to start tags; ampersands are +used to denote HTML entities. If you want to use them as literal +characters, you must escape them as entities, e.g.<
, and +&
.Ampersands in particular are bedeviling for web writers. If you want to +write about 'AT&T', you need to write '
+ +AT&T
'. You even need to +escape ampersands within URLs. Thus, if you want to link to:+ +http://images.google.com/images?num=30&q=larry+bird +
you need to encode the URL as:
+ ++ +http://images.google.com/images?num=30&q=larry+bird +
in your anchor tag
+ +href
attribute. Needless to say, this is easy to +forget, and is probably the single most common source of HTML validation +errors in otherwise well-marked-up web sites.Markdown allows you to use these characters naturally, taking care of +all the necessary escaping for you. If you use an ampersand as part of +an HTML entity, it remains unchanged; otherwise it will be translated +into
+ +&
.So, if you want to include a copyright symbol in your article, you can write:
+ ++ +© +
and Markdown will leave it alone. But if you write:
+ ++ +AT&T +
Markdown will translate it to:
+ ++ +AT&T +
Similarly, because Markdown supports inline HTML, if you use +angle brackets as delimiters for HTML tags, Markdown will treat them as +such. But if you write:
+ ++ +4 < 5 +
Markdown will translate it to:
+ ++ +4 < 5 +
However, inside Markdown code spans and blocks, angle brackets and +ampersands are always encoded automatically. This makes it easy to use +Markdown to write about HTML code. (As opposed to raw HTML, which is a +terrible format for writing about HTML syntax, because every single
+ +<
+and&
in your example code needs to be escaped.)
+ +Block Elements
+ +Paragraphs and Line Breaks
+ +A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be intended with spaces or tabs.
+ +The implication of the "one or more consecutive lines of text" rule is +that Markdown supports "hard-wrapped" text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's "Convert Line Breaks" option) which translate every line break +character in a paragraph into a
+ +<br />
tag.When you do want to insert a
+ +<br />
break tag using Markdown, you +end a line with two or more spaces, then type return.Yes, this takes a tad more effort to create a
+ +<br />
, but a simplistic +"every line break is a<br />
" rule wouldn't work for Markdown. +Markdown's email-style blockquoting and multi-paragraph list items +work best -- and look better -- when you format them with hard breaks.Headers
+ +Markdown supports two styles of headers, Setext and atx.
+ +Setext-style headers are "underlined" using equal signs (for first-level +headers) and dashes (for second-level headers). For example:
+ ++ +This is an H1 +============= + +This is an H2 +------------- +
Any number of underlining
+ +=
's or-
's will work.Atx-style headers use 1-6 hash characters at the start of the line, +corresponding to header levels 1-6. For example:
+ ++ +# This is an H1 + +## This is an H2 + +###### This is an H6 +
Optionally, you may "close" atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) :
+ ++ +# This is an H1 # + +## This is an H2 ## + +### This is an H3 ###### +
Blockquotes
+ +Markdown uses email-style
+ +>
characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a>
before every line:+ +> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +> +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +> id sem consectetuer libero luctus adipiscing. +
Markdown allows you to be lazy and only put the
+ +>
before the first +line of a hard-wrapped paragraph:+ +> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. + +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +id sem consectetuer libero luctus adipiscing. +
Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of
+ +>
:+ +> This is the first level of quoting. +> +> > This is nested blockquote. +> +> Back to the first level. +
Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks:
+ ++ +> ## This is a header. +> +> 1. This is the first list item. +> 2. This is the second list item. +> +> Here's some example code: +> +> return shell_exec("echo $input | $markdown_script"); +
Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu.
+ +Lists
+ +Markdown supports ordered (numbered) and unordered (bulleted) lists.
+ +Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers:
+ ++ +* Red +* Green +* Blue +
is equivalent to:
+ ++ ++ Red ++ Green ++ Blue +
and:
+ ++ +- Red +- Green +- Blue +
Ordered lists use numbers followed by periods:
+ ++ +1. Bird +2. McHale +3. Parish +
It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is:
+ ++ +<ol> +<li>Bird</li> +<li>McHale</li> +<li>Parish</li> +</ol> +
If you instead wrote the list in Markdown like this:
+ ++ +1. Bird +1. McHale +1. Parish +
or even:
+ ++ +3. Bird +1. McHale +8. Parish +
you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to.
+ +If you do use lazy list numbering, however, you should still start the +list with the number 1. At some point in the future, Markdown may support +starting ordered lists at an arbitrary number.
+ +List markers typically start at the left margin, but may be indented by +up to three spaces. List markers must be followed by one or more spaces +or a tab.
+ +To make lists look nice, you can wrap items with hanging indents:
+ ++ +* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, + viverra nec, fringilla in, laoreet vitae, risus. +* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. + Suspendisse id sem consectetuer libero luctus adipiscing. +
But if you want to be lazy, you don't have to:
+ ++ +* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +viverra nec, fringilla in, laoreet vitae, risus. +* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +Suspendisse id sem consectetuer libero luctus adipiscing. +
If list items are separated by blank lines, Markdown will wrap the +items in
+ +<p>
tags in the HTML output. For example, this input:+ +* Bird +* Magic +
will turn into:
+ ++ +<ul> +<li>Bird</li> +<li>Magic</li> +</ul> +
But this:
+ ++ +* Bird + +* Magic +
will turn into:
+ ++ +<ul> +<li><p>Bird</p></li> +<li><p>Magic</p></li> +</ul> +
List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be intended by either 4 spaces +or one tab:
+ ++ +1. This is a list item with two paragraphs. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. Aliquam hendrerit + mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. Donec sit amet nisl. Aliquam semper ipsum + sit amet velit. + +2. Suspendisse id sem consectetuer libero luctus adipiscing. +
It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy:
+ ++ +* This is a list item with two paragraphs. + + This is the second paragraph in the list item. You're +only required to indent the first line. Lorem ipsum dolor +sit amet, consectetuer adipiscing elit. + +* Another item in the same list. +
To put a blockquote within a list item, the blockquote's
+ +>
+delimiters need to be indented:+ +* A list item with a blockquote: + + > This is a blockquote + > inside a list item. +
To put a code block within a list item, the code block needs +to be indented twice -- 8 spaces or two tabs:
+ ++ +* A list item with a code block: + + <code goes here> +
It's worth noting that it's possible to trigger an ordered list by +accident, by writing something like this:
+ ++ +1986. What a great season. +
In other words, a number-period-space sequence at the beginning of a +line. To avoid this, you can backslash-escape the period:
+ ++ +1986\. What a great season. +
Code Blocks
+ +Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both
+ +<pre>
and<code>
tags.To produce a code block in Markdown, simply indent every line of the +block by at least 4 spaces or 1 tab. For example, given this input:
+ ++ +This is a normal paragraph: + + This is a code block. +
Markdown will generate:
+ ++ +<p>This is a normal paragraph:</p> + +<pre><code>This is a code block. +</code></pre> +
One level of indentation -- 4 spaces or 1 tab -- is removed from each +line of the code block. For example, this:
+ ++ +Here is an example of AppleScript: + + tell application "Foo" + beep + end tell +
will turn into:
+ ++ +<p>Here is an example of AppleScript:</p> + +<pre><code>tell application "Foo" + beep +end tell +</code></pre> +
A code block continues until it reaches a line that is not indented +(or the end of the article).
+ +Within a code block, ampersands (
+ +&
) and angle brackets (<
and>
) +are automatically converted into HTML entities. This makes it very +easy to include example HTML source code using Markdown -- just paste +it and indent it, and Markdown will handle the hassle of encoding the +ampersands and angle brackets. For example, this:+ +<div class="footer"> + © 2004 Foo Corporation + </div> +
will turn into:
+ ++ +<pre><code><div class="footer"> + &copy; 2004 Foo Corporation +</div> +</code></pre> +
Regular Markdown syntax is not processed within code blocks. E.g., +asterisks are just literal asterisks within a code block. This means +it's also easy to use Markdown to write about Markdown's own syntax.
+ +Horizontal Rules
+ +You can produce a horizontal rule tag (
+ +<hr />
) by placing three or +more hyphens, asterisks, or underscores on a line by themselves. If you +wish, you may use spaces between the hyphens or asterisks. Each of the +following lines will produce a horizontal rule:+ +* * * + +*** + +***** + +- - - + +--------------------------------------- + +_ _ _ +
+ +Span Elements
+ +Links
+ +Markdown supports two style of links: inline and reference.
+ +In both styles, the link text is delimited by [square brackets].
+ +To create an inline link, use a set of regular parentheses immediately +after the link text's closing square bracket. Inside the parentheses, +put the URL where you want the link to point, along with an optional +title for the link, surrounded in quotes. For example:
+ ++ +This is [an example](http://example.com/ "Title") inline link. + +[This link](http://example.net/) has no title attribute. +
Will produce:
+ ++ +<p>This is <a href="http://example.com/" title="Title"> +an example</a> inline link.</p> + +<p><a href="http://example.net/">This link</a> has no +title attribute.</p> +
If you're referring to a local resource on the same server, you can +use relative paths:
+ ++ +See my [About](/about/) page for details. +
Reference-style links use a second set of square brackets, inside +which you place a label of your choosing to identify the link:
+ ++ +This is [an example][id] reference-style link. +
You can optionally use a space to separate the sets of brackets:
+ ++ +This is [an example] [id] reference-style link. +
Then, anywhere in the document, you define your link label like this, +on a line by itself:
+ ++ +[id]: http://example.com/ "Optional Title Here" +
That is:
+ ++
+ +- Square brackets containing the link identifier (optionally +indented from the left margin using up to three spaces);
+- followed by a colon;
+- followed by one or more spaces (or tabs);
+- followed by the URL for the link;
+- optionally followed by a title attribute for the link, enclosed +in double or single quotes.
+The link URL may, optionally, be surrounded by angle brackets:
+ ++ +[id]: <http://example.com/> "Optional Title Here" +
You can put the title attribute on the next line and use extra spaces +or tabs for padding, which tends to look better with longer URLs:
+ ++ +[id]: http://example.com/longish/path/to/resource/here + "Optional Title Here" +
Link definitions are only used for creating links during Markdown +processing, and are stripped from your document in the HTML output.
+ +Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are not case sensitive. E.g. these two links:
+ ++ +[link text][a] +[link text][A] +
are equivalent.
+ +The implicit link name shortcut allows you to omit the name of the +link, in which case the link text itself is used as the name. +Just use an empty set of square brackets -- e.g., to link the word +"Google" to the google.com web site, you could simply write:
+ ++ +[Google][] +
And then define the link:
+ ++ +[Google]: http://google.com/ +
Because link names may contain spaces, this shortcut even works for +multiple words in the link text:
+ ++ +Visit [Daring Fireball][] for more information. +
And then define the link:
+ ++ +[Daring Fireball]: http://daringfireball.net/ +
Link definitions can be placed anywhere in your Markdown document. I +tend to put them immediately after each paragraph in which they're +used, but if you want, you can put them all at the end of your +document, sort of like footnotes.
+ +Here's an example of reference links in action:
+ ++ +I get 10 times more traffic from [Google] [1] than from +[Yahoo] [2] or [MSN] [3]. + + [1]: http://google.com/ "Google" + [2]: http://search.yahoo.com/ "Yahoo Search" + [3]: http://search.msn.com/ "MSN Search" +
Using the implicit link name shortcut, you could instead write:
+ ++ +I get 10 times more traffic from [Google][] than from +[Yahoo][] or [MSN][]. + + [google]: http://google.com/ "Google" + [yahoo]: http://search.yahoo.com/ "Yahoo Search" + [msn]: http://search.msn.com/ "MSN Search" +
Both of the above examples will produce the following HTML output:
+ ++ +<p>I get 10 times more traffic from <a href="http://google.com/" +title="Google">Google</a> than from +<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a> +or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p> +
For comparison, here is the same paragraph written using +Markdown's inline link style:
+ ++ +I get 10 times more traffic from [Google](http://google.com/ "Google") +than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or +[MSN](http://search.msn.com/ "MSN Search"). +
The point of reference-style links is not that they're easier to +write. The point is that with reference-style links, your document +source is vastly more readable. Compare the above examples: using +reference-style links, the paragraph itself is only 81 characters +long; with inline-style links, it's 176 characters; and as raw HTML, +it's 234 characters. In the raw HTML, there's more markup than there +is text.
+ +With Markdown's reference-style links, a source document much more +closely resembles the final output, as rendered in a browser. By +allowing you to move the markup-related metadata out of the paragraph, +you can add links without interrupting the narrative flow of your +prose.
+ +Emphasis
+ +Markdown treats asterisks (
+ +*
) and underscores (_
) as indicators of +emphasis. Text wrapped with one*
or_
will be wrapped with an +HTML<em>
tag; double*
's or_
's will be wrapped with an HTML +<strong>
tag. E.g., this input:+ +*single asterisks* + +_single underscores_ + +**double asterisks** + +__double underscores__ +
will produce:
+ ++ +<em>single asterisks</em> + +<em>single underscores</em> + +<strong>double asterisks</strong> + +<strong>double underscores</strong> +
You can use whichever style you prefer; the lone restriction is that +the same character must be used to open and close an emphasis span.
+ +Emphasis can be used in the middle of a word:
+ ++ +un*fucking*believable +
But if you surround an
+ +*
or_
with spaces, it'll be treated as a +literal asterisk or underscore.To produce a literal asterisk or underscore at a position where it +would otherwise be used as an emphasis delimiter, you can backslash +escape it:
+ ++ +\*this text is surrounded by literal asterisks\* +
Code
+ +To indicate a span of code, wrap it with backtick quotes (
+ +`
). +Unlike a pre-formatted code block, a code span indicates code within a +normal paragraph. For example:+ +Use the `printf()` function. +
will produce:
+ ++ +<p>Use the <code>printf()</code> function.</p> +
To include a literal backtick character within a code span, you can use +multiple backticks as the opening and closing delimiters:
+ ++ +``There is a literal backtick (`) here.`` +
which will produce this:
+ ++ +<p><code>There is a literal backtick (`) here.</code></p> +
The backtick delimiters surrounding a code span may include spaces -- +one after the opening, one before the closing. This allows you to place +literal backtick characters at the beginning or end of a code span:
+ ++ +A single backtick in a code span: `` ` `` + +A backtick-delimited string in a code span: `` `foo` `` +
will produce:
+ ++ +<p>A single backtick in a code span: <code>`</code></p> + +<p>A backtick-delimited string in a code span: <code>`foo`</code></p> +
With a code span, ampersands and angle brackets are encoded as HTML +entities automatically, which makes it easy to include example HTML +tags. Markdown will turn this:
+ ++ +Please don't use any `<blink>` tags. +
into:
+ ++ +<p>Please don't use any <code><blink></code> tags.</p> +
You can write this:
+ ++ +`—` is the decimal-encoded equivalent of `—`. +
to produce:
+ ++ +<p><code>&#8212;</code> is the decimal-encoded +equivalent of <code>&mdash;</code>.</p> +
Images
+ +Admittedly, it's fairly difficult to devise a "natural" syntax for +placing images into a plain text document format.
+ +Markdown uses an image syntax that is intended to resemble the syntax +for links, allowing for two styles: inline and reference.
+ +Inline image syntax looks like this:
+ ++ +![Alt text](/path/to/img.jpg) + +![Alt text](/path/to/img.jpg "Optional title") +
That is:
+ ++
+ +- An exclamation mark:
+!
;- followed by a set of square brackets, containing the
+alt
+attribute text for the image;- followed by a set of parentheses, containing the URL or path to +the image, and an optional
+title
attribute enclosed in double +or single quotes.Reference-style image syntax looks like this:
+ ++ +![Alt text][id] +
Where "id" is the name of a defined image reference. Image references +are defined using syntax identical to link references:
+ ++ +[id]: url/to/image "Optional title attribute" +
As of this writing, Markdown has no syntax for specifying the +dimensions of an image; if this is important to you, you can simply +use regular HTML
+ +<img>
tags.
+ +Miscellaneous
+ +Automatic Links
+ +Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
+ ++ +<http://example.com/> +
Markdown will turn this into:
+ ++ +<a href="http://example.com/">http://example.com/</a> +
Automatic links for email addresses work similarly, except that +Markdown will also perform a bit of randomized decimal and hex +entity-encoding to help obscure your address from address-harvesting +spambots. For example, Markdown will turn this:
+ ++ +<address@example.com> +
into something like this:
+ ++ +<a href="mailto:addre +ss@example.co +m">address@exa +mple.com</a> +
which will render in a browser as a clickable link to "address@example.com".
+ +(This sort of entity-encoding trick will indeed fool many, if not +most, address-harvesting bots, but it definitely won't fool all of +them. It's better than nothing, but an address published in this way +will probably eventually start receiving spam.)
+ +Backslash Escapes
+ +Markdown allows you to use backslash escapes to generate literal +characters which would otherwise have special meaning in Markdown's +formatting syntax. For example, if you wanted to surround a word with +literal asterisks (instead of an HTML
+ +<em>
tag), you can backslashes +before the asterisks, like this:+ +\*literal asterisks\* +
Markdown provides backslash escapes for the following characters:
+ +diff --git a/upskirtref/Markdown Documentation - Syntax.text b/upskirtref/Markdown Documentation - Syntax.text old mode 100755 new mode 100644 diff --git a/upskirtref/Nested blockquotes_upskirt_ref.html b/upskirtref/Nested blockquotes.html old mode 100755 new mode 100644 similarity index 93% rename from upskirtref/Nested blockquotes_upskirt_ref.html rename to upskirtref/Nested blockquotes.html index 4fbc7a1..f1b017e --- a/upskirtref/Nested blockquotes_upskirt_ref.html +++ b/upskirtref/Nested blockquotes.html @@ -1,7 +1,7 @@ -\ backslash +` backtick +* asterisk +_ underscore +{} curly braces +[] square brackets +() parentheses +# hash mark ++ plus sign +- minus sign (hyphen) +. dot +! exclamation mark +
-foo
---bar
-foo
++\ No newline at end of file diff --git a/upskirtref/Nested blockquotes.text b/upskirtref/Nested blockquotes.text old mode 100755 new mode 100644 diff --git a/upskirtref/Ordered and unordered lists_upskirt_ref.html b/upskirtref/Ordered and unordered lists.html old mode 100755 new mode 100644 similarity index 77% rename from upskirtref/Ordered and unordered lists_upskirt_ref.html rename to upskirtref/Ordered and unordered lists.html index c266769..e3219f2 --- a/upskirtref/Ordered and unordered lists_upskirt_ref.html +++ b/upskirtref/Ordered and unordered lists.html @@ -1,152 +1,152 @@ -foo
+++bar
+foo
Unordered
- -Asterisks tight:
- --
- -- asterisk 1
-- asterisk 2
-- asterisk 3
-Asterisks loose:
- --
- -- -
asterisk 1
- -
asterisk 2
- -
asterisk 3
- -Pluses tight:
- --
- -- Plus 1
-- Plus 2
-- Plus 3
-Pluses loose:
- --
- -- -
Plus 1
- -
Plus 2
- -
Plus 3
- -Minuses tight:
- --
- -- Minus 1
-- Minus 2
-- Minus 3
-Minuses loose:
- --
- -- -
Minus 1
- -
Minus 2
- -
Minus 3
Ordered
- -Tight:
- --
- -- First
-- Second
-- Third
-and:
- --
- -- One
-- Two
-- Three
-Loose using tabs:
- --
- -- -
First
- -
Second
- -
Third
and using spaces:
- --
- -- -
One
- -
Two
- -
Three
Multiple paragraphs:
- --
- -- -
Item 1, graf one.
- -Item 2. graf two. The quick brown fox jumped over the lazy dog's -back.
- -
Item 2.
- -
Item 3.
Nested
- --
- -- Tab - -
--
- Tab - -
--
- Tab
-Here's another:
- --
- -- First
-- Second: - -
--
- Fee
-- Fie
-- Foe
-- Third
-Same thing but with paragraphs:
- --
- -- -
First
- -
Second:
- --
- Fee
-- Fie
-- Foe
-- -
Third
This was an error in Markdown 1.0.1:
- --
+- -
this
- --
- -- sub
-that
Unordered
+ +Asterisks tight:
+ ++
+ +- asterisk 1
+- asterisk 2
+- asterisk 3
+Asterisks loose:
+ ++
+ +- +
asterisk 1
- +
asterisk 2
- +
asterisk 3
+ +Pluses tight:
+ ++
+ +- Plus 1
+- Plus 2
+- Plus 3
+Pluses loose:
+ ++
+ +- +
Plus 1
- +
Plus 2
- +
Plus 3
+ +Minuses tight:
+ ++
+ +- Minus 1
+- Minus 2
+- Minus 3
+Minuses loose:
+ ++
+ +- +
Minus 1
- +
Minus 2
- +
Minus 3
Ordered
+ +Tight:
+ ++
+ +- First
+- Second
+- Third
+and:
+ ++
+ +- One
+- Two
+- Three
+Loose using tabs:
+ ++
+ +- +
First
- +
Second
- +
Third
and using spaces:
+ ++
+ +- +
One
- +
Two
- +
Three
Multiple paragraphs:
+ ++
+ +- +
Item 1, graf one.
+ +Item 2. graf two. The quick brown fox jumped over the lazy dog's +back.
- +
Item 2.
- +
Item 3.
Nested
+ ++
+ +- Tab + +
++
- Tab + +
++
- Tab
+Here's another:
+ ++
+ +- First
+- Second: + +
++
- Fee
+- Fie
+- Foe
+- Third
+Same thing but with paragraphs:
+ ++
+ +- +
First
- +
Second:
+ ++
- Fee
+- Fie
+- Foe
+- +
Third
This was an error in Markdown 1.0.1:
+ ++
diff --git a/upskirtref/Ordered and unordered lists.text b/upskirtref/Ordered and unordered lists.text old mode 100755 new mode 100644 diff --git a/upskirtref/Strong and em together_upskirt_ref.html b/upskirtref/Strong and em together.html old mode 100755 new mode 100644 similarity index 96% rename from upskirtref/Strong and em together_upskirt_ref.html rename to upskirtref/Strong and em together.html index 3404517..71ec78c --- a/upskirtref/Strong and em together_upskirt_ref.html +++ b/upskirtref/Strong and em together.html @@ -1,7 +1,7 @@ -- +
this
+ ++
+ +- sub
+that
This is strong and em.
- -So is this word.
- -This is strong and em.
- -So is this word.
+This is strong and em.
+ +So is this word.
+ +This is strong and em.
+ +So is this word.
diff --git a/upskirtref/Strong and em together.text b/upskirtref/Strong and em together.text old mode 100755 new mode 100644 diff --git a/upskirtref/Tabs_upskirt_ref.html b/upskirtref/Tabs.html old mode 100755 new mode 100644 similarity index 94% rename from upskirtref/Tabs_upskirt_ref.html rename to upskirtref/Tabs.html index c83fd98..3301ba8 --- a/upskirtref/Tabs_upskirt_ref.html +++ b/upskirtref/Tabs.html @@ -1,25 +1,25 @@ --
- -- -
this is a list item -indented with tabs
- -
this is a list item -indented with spaces
Code:
- -- -this code block is indented by one tab -
And:
- -- -this code block is indented by two tabs -
And:
- -++ this is an example list item - indented with tabs - -+ this is an example list item - indented with spaces -
+
+ +- +
this is a list item +indented with tabs
- +
this is a list item +indented with spaces
Code:
+ ++ +this code block is indented by one tab +
And:
+ ++ +this code block is indented by two tabs +
And:
+ +diff --git a/upskirtref/Tabs.text b/upskirtref/Tabs.text old mode 100755 new mode 100644 diff --git a/upskirtref/Tidyness_upskirt_ref.html b/upskirtref/Tidyness.html old mode 100755 new mode 100644 similarity index 94% rename from upskirtref/Tidyness_upskirt_ref.html rename to upskirtref/Tidyness.html index d805d5d..b965bef --- a/upskirtref/Tidyness_upskirt_ref.html +++ b/upskirtref/Tidyness.html @@ -1,9 +1,9 @@ -+ this is an example list item + indented with tabs + ++ this is an example list item + indented with spaces +
-A list within a blockquote:
- --
+- asterisk 1
-- asterisk 2
-- asterisk 3
-+\ No newline at end of file diff --git a/upskirtref/Tidyness.text b/upskirtref/Tidyness.text old mode 100755 new mode 100644 diff --git a/upskirtref_test.go b/upskirtref_test.go index be30138..72c8b37 100644 --- a/upskirtref_test.go +++ b/upskirtref_test.go @@ -35,7 +35,7 @@ func doFileTests(t *testing.T, files []string) { t.Errorf("Couldn't open '%s', error: %v\n", fn, err) continue } - fn = filepath.Join("upskirtref", basename+"_upskirt_ref.html") + fn = filepath.Join("upskirtref", basename+".html") expecteddata, err := ioutil.ReadFile(fn) if err != nil { t.Errorf("Couldn't open '%s', error: %v\n", fn, err)A list within a blockquote:
+ ++
- asterisk 1
+- asterisk 2
+- asterisk 3
+