Markdown 的目標(biāo)是易讀易寫。
Markdown強(qiáng)調(diào)可讀性高于一切。一份Markdown格式的文檔應(yīng)該能直接以純文本方式發(fā)布,而不致一眼看過去滿眼都是標(biāo)簽和格式化指令。Markdown的語法確實(shí)受了幾種現(xiàn)有的text轉(zhuǎn)HTML過濾器影響--包括 Setext, atx, Textile, reStructuredText,Grutatext, 和 EtText -- 其中對(duì)Markdown語法影響最大的單一來源是純文本的Email格式。
為實(shí)現(xiàn)這一目標(biāo),Markdown的語法幾乎全部由標(biāo)點(diǎn)符號(hào)構(gòu)成,這些標(biāo)點(diǎn)符號(hào)都是精心挑選而來,盡量做到能望文生義。如星號(hào)括著一個(gè)單詞(Markdown中表示強(qiáng)調(diào))看上去就像 *強(qiáng)調(diào)*。Markdown的列表看上去就像列表;Markdown的引文就象引文,和你使用email時(shí)的感覺一樣。
Markdown的語法為“方便地在網(wǎng)上寫作”這一目標(biāo)而生。
Markdown不是HTML替代品,也不是為了終接HTML。它的語法非常簡單,只相當(dāng)于HTML標(biāo)簽的一個(gè)非常非常小的子集。它并非是為了更容易輸入HTML標(biāo)簽而創(chuàng)造一種新語法。在我看來,HTML標(biāo)簽已經(jīng)夠容易書寫的了。Markdown的目標(biāo)是讓(在網(wǎng)上)讓讀文章、寫文章、修改文章更容易。HTML是一種適合發(fā)表的格式;而Markdown是一種書寫格式。正因如此,Markdown的格式化語法僅需解決用純文本表達(dá)的問題。
對(duì)Markdown語法無法支持的格式,你可以直接用HTML。你不需要事先聲明或者使用什么定界符來告訴Markdown要寫HTML了,你直接寫就是了。
唯一的限制是那些塊級(jí)HTML元素 -- 如 <div>
,<table>
, <pre>
, <p>
等等 -- 必須使用空行與相鄰內(nèi)容分開,并且塊元素的開始和結(jié)束標(biāo)簽之前不要留有空格或TAB。Markdown足夠聰明不會(huì)添加額外的(也是不必要的)<p>
標(biāo)簽包住這些塊元素標(biāo)簽。
下面這個(gè)例子,在一篇Markdown文章中添加了一個(gè)HTML表格:
這是一個(gè)普通的段落。
<table>
<tr>
<td>Foo</td>
</tr>
</table>
這是另一個(gè)普通的段落。
注意一點(diǎn),不要在塊級(jí)HTML元素內(nèi)使用Markdown格式化命令,Markdown不會(huì)處理它們。比如你不要在一個(gè)HTML塊中使用 *emphasis*
這樣的Markdown格式化命令。
行內(nèi)HTML標(biāo)簽 -- 如 <span>
, <cite>
, 或 <del>
-- 在一個(gè)Markdown段落里、列表中、或者標(biāo)題中--隨便用。 如果需要,你甚至可以用HTML標(biāo)簽代替Markdown格式化命令。比方你可以直接用HTML標(biāo)簽 <a>
或 <img>
而不使用Markdown的鏈接和圖片語法,隨你的便。
不同于這些塊級(jí)HTML元素,在HTML行內(nèi)元素內(nèi)的Markdown語法標(biāo)記會(huì)被正確處理。
在HTML中,有兩個(gè)字符需要特殊對(duì)待:<
和 &
。<
用于標(biāo)簽開始,&
用于標(biāo)識(shí)HTML實(shí)體。如果打算把它們當(dāng)成普通字符,你必須使用反引號(hào)轉(zhuǎn)義它們,如<
和&
。
對(duì)一些互聯(lián)網(wǎng)作家來說,&
符號(hào)特別使人煩惱。如果你打算寫'AT&T',你就得寫 'AT&T
'。甚至在URL中也得想著轉(zhuǎn)義&
符號(hào)。比方你打算寫:
http://images.google.com/images?num=30&q=larry+bird
你就得在A標(biāo)簽中把href
屬性中的URL編碼成:
http://images.google.com/images?num=30&q=larry+bird
不用說,這很容易忘。這往往是那些良構(gòu)HTML站點(diǎn)中最容易出錯(cuò)的地方。
在Markdown中,你盡管自然的使用這些字符,只需要關(guān)心那些必要的轉(zhuǎn)義。如果使用在HTML實(shí)體中使用&符號(hào),它會(huì)保持不變;而在其它場(chǎng)合,它會(huì)轉(zhuǎn)換成&
。
所以,如果你打算在文章中書寫版權(quán)符號(hào),你可以這樣寫:
©
Markdown不會(huì)碰它。然而如果你書寫
AT&T
Markdown就會(huì)把它翻譯成:
AT&T
類似的,既然Markdown支持內(nèi)嵌HTML,如果你使用<
作為HTML標(biāo)簽定界符,Markdown就會(huì)把它們當(dāng)成HTML標(biāo)簽定界符??墒侨绻銜鴮懀?/p>
4 < 5
Markdown就會(huì)把它翻譯成:
4 < 5
然而,在Mardown代碼行內(nèi)標(biāo)記和塊級(jí)標(biāo)記之中,<
和&
始終會(huì)被自動(dòng)編碼。這使得在Markdown文件中書寫HTML代碼更容易.(相對(duì)于純HTML。如果想在純?cè)诩僅TML里貼一段HTML代碼,那才是糟糕透頂,必須對(duì)代碼中的每一個(gè)<
和&
都轉(zhuǎn)義才成。)
一個(gè)段落由一行或多個(gè)相關(guān)文本行構(gòu)成。段落之間用一個(gè)或多個(gè)空行分隔。(一個(gè)空行就是一個(gè)看上去什么也沒有的行--如果一行什么也沒有或者只有空格和TAB都會(huì)被視為空行)正常的段落不要以空白或TAB字符開始。
一行或多個(gè)相關(guān)文本行意味著Markdown支持“硬折行”。這一點(diǎn)與其它text轉(zhuǎn)HTML的程序完全不同(包括Moveable Type的“Convert Line Breaks”選項(xiàng)),它們會(huì)將段落中的每一個(gè)換行符轉(zhuǎn)換成<br />
標(biāo)簽。
如果你確實(shí)需要使用Markdown插入一個(gè)<br />
換行符,只需要在每一行的末尾以兩個(gè)或更多個(gè)空格符號(hào)結(jié)束,然后再打回車鍵。
沒錯(cuò),在Markdown里生成一個(gè)<br />
稍稍有一點(diǎn)麻煩,但那種簡單的“把每一個(gè)換行符都轉(zhuǎn)換成<br />
規(guī)則”并不適用于Markdown。Markdown Email風(fēng)格的 blockquoting 和 multi-paragraph list items更好用 -- 并且更美觀 -- 在你用換行符對(duì)其格式化時(shí)。
Markdown 支持兩種風(fēng)格的標(biāo)題,Setext 和 atx.
Setext-風(fēng)格的一級(jí)標(biāo)題下面一行使用等號(hào)符號(hào),二級(jí)標(biāo)題下面使用連字符符號(hào),例如:
這是一個(gè)一級(jí)標(biāo)題
=============
這是一個(gè)二級(jí)標(biāo)題
-------------
至少有一個(gè)=
和-
就能正常工作。
Atx-風(fēng)格的標(biāo)題在每行的開頭使用1-6個(gè)井號(hào)字符,分別對(duì)應(yīng)標(biāo)題級(jí)別1-6。例如:
# 這是一級(jí)標(biāo)題
## 這是二級(jí)標(biāo)題
###### 這是六級(jí)標(biāo)題
如果愿意, 你也可以 "結(jié)束" atx-風(fēng)格的標(biāo)題。這純粹是美觀考慮--如果你覺得這樣會(huì)看上更舒服些的話。結(jié)束用的井號(hào)個(gè)數(shù)隨便,不必與起始井號(hào)數(shù)量相同 (起始井號(hào)的數(shù)量決定標(biāo)題級(jí)別):
# 這是一級(jí)標(biāo)題 #
## 這是二級(jí)標(biāo)題 ##
### 這是三級(jí)標(biāo)題 ######
Markdown使用Email風(fēng)格的 >
字符引用塊。如果你熟悉Email中的引用塊,你就知道在Markdown中如何使用引用塊。如果每一行你都使用硬換行并在行首放一個(gè)>
符號(hào),看上去會(huì)很美觀:
> 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.
(如果覺得每行寫一個(gè)>
太累,)Markdown允許你偷懶,你只需在硬換行段落的第一行之前放一個(gè)>
號(hào):
> 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.
只需要多加一個(gè)>
,就得到嵌套的引用塊(即引用塊中的引用塊):
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
引用塊中可包含其它Markdown元素,如標(biāo)題、列表和代碼塊:
> ## 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");
是個(gè)象樣的文本編輯器都能實(shí)現(xiàn)Email風(fēng)格的引用。比如在BBEdit里,你就可以選中一些文字之后從Text菜單里選擇引用級(jí)別。
Markdown 支持有序列表和無序列表
無序列表可使用星號(hào)、加號(hào)和連字符(這幾個(gè)符號(hào)是等價(jià)的,你喜歡哪個(gè)就用哪個(gè))作為列表標(biāo)記:
* Red
* Green
* Blue
等同于:
+ Red
+ Green
+ Blue
也等同于:
- Red
- Green
- Blue
有序列表則使用數(shù)字加英文句點(diǎn):
1. Bird
2. McHale
3. Parish
有一點(diǎn)需要注意,你在列表中輸入的標(biāo)記數(shù)字并不會(huì)反映到Markdown輸出的HTML之中。上面這個(gè)列表Markdown會(huì)輸出為:
<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>
即使你寫成下面這樣:
1. Bird
1. McHale
1. Parish
甚至這樣:
3. Bird
1. McHale
8. Parish
都會(huì)得到一模一樣(但正確的)輸出。要點(diǎn)在于,如果你愿意,就在你的Markdown有序列表里順序使用數(shù)字(這樣源代碼里的順序和生成的順序會(huì)一致),如果你希望省點(diǎn)兒事,你就不用費(fèi)心(去手工編號(hào))。
如果你打算偷懶,記住列表的第一行使用數(shù)字 1。以后Markdown或許會(huì)支持有序列表從任意數(shù)字開始(譯者注:這兒和前面的例子有點(diǎn)矛盾,原文如此)。
列表標(biāo)記通常從左邊界開始,至多可以有三個(gè)空格的縮進(jìn)。列表標(biāo)記之后至少要跟一個(gè)空格或TAB。
為了讓列表看起來美觀,你可以使用TAB縮進(jìn)列表項(xiàng)內(nèi)容,使其整齊:
* 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.
不過如果你很懶,下面這樣也行:
* 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.
如果列表項(xiàng)之間用空行分隔,Markdown就會(huì)在HTML輸出中使用<p>
標(biāo)簽包裹列表項(xiàng)。比如:
* Bird
* Magic
生成的HTML如下:
<ul>
<li>Bird</li>
<li>Magic</li>
</ul>
而這個(gè):
* Bird
* Magic
生成的HTML是這樣:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
列表項(xiàng)有可能由多個(gè)段落組成,列表項(xiàng)的每個(gè)后續(xù)段落必須縮進(jìn)至少4個(gè)空格或者一個(gè)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.
像上面這樣縮進(jìn)后續(xù)段落的每一行看起來很美觀(但稍有些麻煩),如果你比較懶(和我一樣),沒問題,Markdown支持你:
* 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.
要在列表項(xiàng)中使用引用,引用定界符 >
需要縮進(jìn):
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
要在列表項(xiàng)中使用代碼塊,代碼塊需要縮進(jìn)兩次 -- 8個(gè)空格或者兩個(gè)TAB:
* A list item with a code block:
<code goes here>
有時(shí)候不小心會(huì)觸發(fā)一個(gè)有序列表,比方在寫類似下面這樣的東西時(shí):
1986. What a great season.
換言之, 以數(shù)字+句點(diǎn)+空格 序列起始的行會(huì)觸發(fā)有序列表。為避免此情況,要對(duì)句點(diǎn)符號(hào)進(jìn)行轉(zhuǎn)義:
1986\. What a great season.
我們經(jīng)常在寫有關(guān)編程或標(biāo)記語言源代碼時(shí)用到預(yù)格式化的代碼塊。不像格式化普通段落,代碼塊中的行會(huì)按字面進(jìn)行解釋。Markdown對(duì)代碼塊同時(shí)使用<pre>
和 <code>
標(biāo)簽包裹:
在Markdown中要生成一個(gè)代碼塊,只需要在代碼塊內(nèi)容的每一行縮進(jìn)至少四個(gè)空格或者一個(gè)TAB。比如:
This is a normal paragraph:
This is a code block.
Markdown會(huì)生成:
<p>This is a normal paragraph:</p>
<pre><code>This is a code block.
</code></pre>
Markdown會(huì)從生成的代碼塊中刪除一級(jí)縮進(jìn) -- 4個(gè)空格或者1個(gè)TAB??聪旅孢@個(gè)例子:
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
會(huì)得到:
<p>Here is an example of AppleScript:</p>
<pre><code>tell application "Foo"
beep
end tell
</code></pre>
代碼塊在遇到?jīng)]有縮進(jìn)的一行,或者文件末尾時(shí)自動(dòng)結(jié)束。
在代碼塊中,&
符號(hào)和<
、>
會(huì)自動(dòng)轉(zhuǎn)換成HTML實(shí)體。因此在Markdown中包含HTML源代碼只是小菜一碟--粘貼進(jìn)去,縮進(jìn)一下。剩下的臟活累活Markdown自會(huì)處理??聪旅孢@個(gè)例子:
<div class="sample_footer">
© 2004 Foo Corporation
</div>
Markdown會(huì)生成:
Markdown不會(huì)解析代碼塊中的Markdown標(biāo)記。如代碼塊中的星號(hào)就是星號(hào),失去了它原來的Markdown含義。這意味著你能夠使用Markdown編寫Markdown自己的語法教程。(就象這篇文章一樣)。
如果在一行里只放三個(gè)或更多個(gè)連字符,或星號(hào)或下劃線,你就會(huì)得到一個(gè)水平線標(biāo)記(<hr />
)。下面每一行都會(huì)得到一個(gè)水平線:
* * *
***
*****
- - -
---------------------------------------
Markdown 支持兩種風(fēng)格的鏈接: 行內(nèi)鏈接 和 引用鏈接.
兩種風(fēng)格的鏈接,鏈接文本都放在中括號(hào)之內(nèi)[square brackets]。
要生成一個(gè)行內(nèi)鏈接,在鏈接文本之后緊跟用一對(duì)小括號(hào)。小括號(hào)里放鏈接地址和可選的的鏈接title。如果提供鏈接title的話,鏈接title要用引號(hào)包起來。例如:
這是一個(gè) [an example](http://example.com/ "Title") 行內(nèi)鏈接。
[這個(gè)鏈接](http://example.net/) 沒有title屬性。
Markdown會(huì)生成:
<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>
如果你打算引用一個(gè)本地資源或者同一站點(diǎn)的資源,可以使用相對(duì)路徑:
如果想進(jìn)一步了解我,請(qǐng)參閱我的 [關(guān)于我](/about/) 頁。
引用風(fēng)格的鏈接,在鏈接文本之后緊跟又一對(duì)中括號(hào)。這對(duì)中括號(hào)里放的是該鏈接的標(biāo)識(shí)符(可以理解為別名):
這是一個(gè)引用型鏈接 [示例][id]。
如果你嫌棄兩對(duì)中括號(hào)過于親密,Markdown允許你在兩對(duì)中括號(hào)之間放一個(gè)空格:
這是一個(gè)引用型鏈接 [示例] [id]。
然后,我們可以在文檔的任意位置,像下面這樣定義鏈接標(biāo)識(shí)與鏈接的對(duì)應(yīng)關(guān)系(一行一個(gè)鏈接):
[id]: http://example.com/ "Optional Title Here"
即:
下面三種鏈接定義方式是等價(jià)的:
[foo]: http://example.com/ "Optional Title Here"
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ (Optional Title Here)
注意: Markdown.pl 1.0.1 版本有一個(gè)已知的bug,用單引號(hào)作為鏈接title的定界符會(huì)出問題。
至于鏈接URL,還支持使用一對(duì)可選的尖括號(hào)包裹起來:
[id]: <http://example.com/> "Optional Title Here"
你也可以將鏈接的title屬性放在下一行并使用額外的空格或TAB填充,這樣較長的URL會(huì)比較美觀:
[id]: http://example.com/longish/path/to/resource/here
"Optional Title Here"
鏈妝定義僅供Markdown解析器使用。最終輸出的HTML當(dāng)中不會(huì)包含鏈接定義。
鏈接標(biāo)識(shí)符可以由字母、數(shù)字、空格和標(biāo)點(diǎn)符號(hào)組成--不區(qū)分大小寫。下面這兩個(gè)鏈接:
[link text][a]
[link text][A]
是等價(jià)的。
隱式鏈接標(biāo)識(shí) 允許我們省略鏈接標(biāo)識(shí),這時(shí)鏈接文本本身就是鏈接標(biāo)識(shí)。在鏈接文本之后加一對(duì)空的中括號(hào)--例如,使用"Google"文本鏈接到google.com站點(diǎn),可以這樣寫:
[Google][]
然后這樣定義它的鏈接:
[Google]: http://google.com/
鏈接名字有可能包含空格,不過沒問題,這種情況照樣正常工作:
Visit [Daring Fireball][] for more information.
然后這樣定義這個(gè)鏈接:
[Daring Fireball]: http://daringfireball.net/
鏈接定義可放于Markdown文檔的任意位置。我建議把它們就近放到最先使用它的段落之后。不過如果你更喜歡放到文檔末尾,當(dāng)成某種形式的尾注,隨你的便。
下面是一些引用鏈接的例子:
I get 10 times more traffic from [Google] [11] than from
[Yahoo] [12] or [MSN] [13].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
換成隱式鏈接標(biāo)識(shí),也可以這么寫:
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"
上面兩種寫法最終得到HTML輸出是一樣的:
<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>
作為比較,下面這個(gè)段落使用Markdown的行內(nèi)鏈接風(fēng)格編寫:
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").
引用型鏈接的亮點(diǎn)并不在于它更容易書寫,而在于引用型鏈接讓你的文檔可讀性更好??纯瓷厦娴睦樱菏褂靡眯玩溄樱温浔旧韮H81個(gè)字符;而使用行內(nèi)鏈接的例子,是176個(gè)字符。最終輸出的HTML則有234個(gè)字符。純HTML中標(biāo)記字符甚至超過了文本本身。
使用Markdown的引用型鏈接,源文檔更接近于最終的瀏覽器輸出效果。再加上Markdown允許將標(biāo)記有關(guān)的元數(shù)據(jù)移到段落之外,你盡管添加鏈接,而不必?fù)?dān)心打斷文件的故事情節(jié)。
Markdown使用星號(hào)(*
)和下劃線(_
)作為表示強(qiáng)調(diào)。用一個(gè) *
或 _
包裹的文本會(huì)使用 HTML <em>
標(biāo)簽包裹; 用兩個(gè) *
或 _
包裹的文本會(huì)使用HTML<strong>
標(biāo)簽包裹。如:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
將會(huì)輸出為:
<em>single asterisks</em>
<em>single underscores</em>
<strong>double asterisks</strong>
<strong>double underscores</strong>
你喜歡哪一種風(fēng)格就用哪一種,唯一的限制就是起始字符與關(guān)閉字符必須一致。
強(qiáng)調(diào)符號(hào)可用于一個(gè)單詞的一部分:
un*frigging*believable
不過如果你用空格包裹單獨(dú)的 *
或 _
,它們就失去了強(qiáng)調(diào)的含義,而成為字面上的星號(hào)或下劃線。
如果不想讓Markdown解釋這兩個(gè)元字符,就轉(zhuǎn)義它:
\*this text is surrounded by literal asterisks\*
要在行內(nèi)表示部分代碼,用反引號(hào)(`
)包住它。與預(yù)格式代碼塊不同和,行內(nèi)代碼用于段落之內(nèi)。例如:
Use the `printf()` function.
會(huì)生成:
<p>Use the <code>printf()</code> function.</p>
要在一個(gè)行內(nèi)代碼中使用反引號(hào)(`
)本身,用多個(gè)反引號(hào)作為定界符包住它:
``There is a literal backtick (`) here.``
這樣就會(huì)得到:
<p><code>There is a literal backtick (`) here.</code></p>
包住行內(nèi)代碼的反引號(hào)定界符可以包括空格--即在起始反引號(hào)之后,結(jié)束反引號(hào)之前可以有一個(gè)空格。這使得我們能夠在行內(nèi)代碼的開始或結(jié)束處使用反引號(hào):
A single backtick in a code span: `` ` ``
A backtick-delimited string in a code span: `` `foo` ``
會(huì)生成:
<p>A single backtick in a code span: <code>`</code></p>
<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
在行內(nèi)代碼中,&
和<
和>
會(huì)自動(dòng)編碼為HTML實(shí)體,以方便包含HTML標(biāo)簽。Markdown會(huì)把下面這行:
Please don't use any `<blink>` tags.
轉(zhuǎn)換為:
<p>Please don't use any <code><blink></code> tags.</p>
你也可以這樣寫:
`—` is the decimal-encoded equivalent of `—`.
會(huì)得到:
<p><code>—</code> is the decimal-encoded
equivalent of <code>—</code>.</p>
必須承認(rèn),要以“自然的”語法把一個(gè)圖片放到一個(gè)純文本文檔之中,確實(shí)是一個(gè)挑戰(zhàn)。
Markdown使用了類似鏈接語法來表示圖片,同樣有兩種風(fēng)格:行內(nèi)圖片和引用圖片。
行內(nèi)圖片語法示例:
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
即:
!
開頭;title
引用圖片語法如下:
![Alt text][id]
這里 "id" 是圖片引用標(biāo)識(shí)。圖片引用定義的語法與鏈接定義完全相同:
[id]: url/to/image "Optional title attribute"
在寫這篇文章時(shí),Markdown還沒有語法指定圖片的大小,如果這一點(diǎn)對(duì)你特別重要,你可以直接使用<img>
標(biāo)簽。
Markdown提供了一種快捷方式"自動(dòng)地"定義鏈接和Email地址:直接用一對(duì)尖括號(hào)把URL或Email地址包住。這表示鏈接文本就是URL本身,Email文本就是Email本身。這樣你就得到了一個(gè)可點(diǎn)擊的鏈接,如:
<http://example.com/>
Markdown會(huì)將它轉(zhuǎn)換為:
<a href="http://example.com/">http://example.com/</a>
自動(dòng)Email地址工作方式相似,只有一點(diǎn)不同。Markdown自動(dòng)的用一些十進(jìn)制和十六進(jìn)制數(shù)字表示你的Email,以防止遭遇垃圾郵件襲擊。 例如:
<address@example.com>
會(huì)被轉(zhuǎn)換為:
<a href="mailto:addre
ss@example.co
m">address@exa
mple.com</a>
瀏覽器會(huì)將它渲染為一個(gè)可點(diǎn)擊的鏈接,并正確顯示 "address@example.com"。
(這種實(shí)體編碼的小方法可以騙過一些收集郵件地址的機(jī)器人,不過它確實(shí)無法騙過所有的機(jī)器人。有總比沒有強(qiáng),聊勝于無。能阻止一點(diǎn)就阻止一點(diǎn)好了。)
Markdown允許你使用反斜線轉(zhuǎn)義那些Markdown元字符,讓它們失去原有的“魔力”。舉個(gè)例子,如果你確實(shí)想用星號(hào)包住一個(gè)詞組(而不是想得到<em>
標(biāo)簽),就可以在星號(hào)之前使用反斜線將其轉(zhuǎn)義。即:
\*literal asterisks\*
Markdown中,以下字符支持使用反斜線轉(zhuǎn)義:
\ 反斜線
` 反引號(hào)
* 星號(hào)
_ 下劃線
{} 大括號(hào)
[] 中括號(hào)
() 小括號(hào)
# 井號(hào)
+ 加號(hào)
- 減號(hào)(連字符)
. 句點(diǎn)
! 感嘆號(hào)
聯(lián)系客服