聲明:本文是對 Markdown 語法說明(簡體中文版)的轉(zhuǎn)載與臨摹竹海。
段落和換行#
一個 Markdown 段落是由一個或多個連續(xù)的文本行組成乍赫,它的前后要有一個以上的空行(空行的定義是顯示上看起來像是空的青灼,便會被視為空行卷仑。比方說孽尽,若某一行只包含空格和制表符,則該行也會被視為空行)毁葱。普通段落不該用空格或制表符來縮進(jìn)垫言。
「由一個或多個連續(xù)的文本行組成」這句話其實(shí)暗示了 Markdown 允許段落內(nèi)的強(qiáng)迫換行(插入換行符),這個特性和其他大部分的 text-to-HTML 格式不一樣(包括 Movable Type 的「Convert Line Breaks」選項(xiàng))倾剿,其它的格式會把每個換行符都轉(zhuǎn)成 <br />
標(biāo)簽筷频。
如果你確實(shí)想要依賴 Markdown 來插入 <br />
標(biāo)簽的話,在插入處先按入兩個以上的空格然后回車前痘。
的確凛捏,需要多費(fèi)點(diǎn)事(多加空格)來產(chǎn)生 <br />
,但是簡單地「每個換行都轉(zhuǎn)換為 <br />
」的方法在 Markdown 中并不適合芹缔,Markdown 中 email 式的區(qū)塊引用和多段落的列表在使用換行來排版的時(shí)候坯癣,不但更好用,還更方便閱讀最欠。
標(biāo)題
Markdown 支持兩種標(biāo)題的語法示罗,類 Setext 和類 atx 形式。
類 Setext 形式是用底線的形式芝硬,利用 =
(最高階標(biāo)題)和 -
(第二階標(biāo)題)蚜点,例如:
This is an H1
=============
This is an H2
-------------
任何數(shù)量的 =
和 -
都可以有效果。
類 Atx 形式則是在行首插入 1 到 6 個 #
拌阴,對應(yīng)到標(biāo)題 1 到 6 階绍绘,例如:
# 這是 H1
## 這是 H2
###### 這是 H6
你可以選擇性地「閉合」類 atx 樣式的標(biāo)題,這純粹只是美觀用的迟赃,若是覺得這樣看起來比較舒適陪拘,你就可以在行尾加上 #
,而行尾的 #
數(shù)量也不用和開頭一樣(行首的 #
字符數(shù)量決定標(biāo)題的階數(shù)):
# 這是 H1 #
## 這是 H2 ##
### 這是 H3 ######
區(qū)塊引用 Blockquotes
Markdown 標(biāo)記區(qū)塊引用是使用類似 email 中用 >
的引用方式捺氢。如果你還熟悉在 email 信件中的引言部分藻丢,你就知道怎么在 Markdown 文件中建立一個區(qū)塊引用,那會看起來像是你自己先斷好行摄乒,然后在每行的最前面加上 >
:
> 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 也允許你偷懶只在整個段落的第一行最前面加上 >
:
> 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.
區(qū)塊引用可以嵌套(例如:引用內(nèi)的引用),只要根據(jù)層次加上不同數(shù)量的 >
:
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
引用的區(qū)塊內(nèi)也可以使用其他的 Markdown 語法残黑,包括標(biāo)題馍佑、列表、代碼區(qū)塊等:
> ## 這是一個標(biāo)題梨水。
>
> 1. 這是第一行列表項(xiàng)拭荤。
> 2. 這是第二行列表項(xiàng)。
>
> 給出一些例子代碼:
>
> return shell_exec("echo $input | $markdown_script");
任何像樣的文本編輯器都能輕松地建立 email 型的引用疫诽。例如在 BBEdit 中舅世,你可以選取文字后然后從選單中選擇增加引用階層旦委。
列表
Markdown 支持有序列表和無序列表。
無序列表使用星號雏亚、加號或是減號作為列表標(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ù)字并不會影響輸出的 HTML 結(jié)果,上面的列表所產(chǎn)生的 HTML 標(biāo)記為:
<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>
如果你的列表標(biāo)記寫成:
1. Bird
1. McHale
1. Parish
或甚至是:
3. Bird
1. McHale
8. Parish
你都會得到完全相同的 HTML 輸出罢低。重點(diǎn)在于查辩,你可以讓 Markdown 文件的列表數(shù)字和輸出的結(jié)果相同,或是你懶一點(diǎn)网持,你可以完全不用在意數(shù)字的正確性宜岛。
如果你使用懶惰的寫法,建議第一個項(xiàng)目最好還是從 1. 開始功舀,因?yàn)?Markdown 未來可能會支持有序列表的 start 屬性萍倡。
列表項(xiàng)目標(biāo)記通常是放在最左邊,但是其實(shí)也可以縮進(jìn)辟汰,最多 3 個空格列敲,項(xiàng)目標(biāo)記后面則一定要接著至少一個空格或制表符。
要讓列表看起來更漂亮莉擒,你可以把內(nèi)容用固定的縮進(jìn)整理好:
* 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)目間用空行分開,在輸出 HTML 時(shí) Markdown 就會將項(xiàng)目內(nèi)容用 <p>
標(biāo)簽包起來涨冀,舉例來說:
* Bird
* Magic
會被轉(zhuǎn)換為:
<ul>
<li>Bird</li>
<li>Magic</li>
</ul>
但是這個:
* Bird
* Magic
會被轉(zhuǎn)換為:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
列表項(xiàng)目可以包含多個段落填硕,每個項(xiàng)目下的段落都必須縮進(jìn) 4 個空格或是 1 個制表符:
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),看起來會看好很多鹿鳖,當(dāng)然扁眯,再次地,如果你很懶惰翅帜,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)目內(nèi)放進(jìn)引用姻檀,那 >
就需要縮進(jìn):
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
如果要放代碼區(qū)塊的話,該區(qū)塊就需要縮進(jìn)*兩次*涝滴,也就是 8 個空格或是 2 個制表符:
* 一列表項(xiàng)包含一個列表區(qū)塊:
<代碼寫在這>
當(dāng)然绣版,項(xiàng)目列表很可能會不小心產(chǎn)生,像是下面這樣的寫法:
1986. What a great season.
換句話說歼疮,也就是在行首出現(xiàn)數(shù)字-句點(diǎn)-空白杂抽,要避免這樣的狀況,你可以在句點(diǎn)前面加上反斜杠韩脏。
1986\. What a great season.
代碼區(qū)塊
和程序相關(guān)的寫作或是標(biāo)簽語言原始碼通常會有已經(jīng)排版好的代碼區(qū)塊缩麸,通常這些區(qū)塊我們并不希望它以一般段落文件的方式去排版,而是照原來的樣子顯示赡矢,Markdown 會用 <pre>
和 <code>
標(biāo)簽來把代碼區(qū)塊包起來杭朱。
要在 Markdown 中建立代碼區(qū)塊很簡單阅仔,只要簡單地縮進(jìn) 4 個空格或是 1 個制表符就可以,例如弧械,下面的輸入:
這是一個普通段落:
這是一個代碼區(qū)塊八酒。
Markdown 會轉(zhuǎn)換成:
<p>這是一個普通段落:</p>
<pre><code>這是一個代碼區(qū)塊。
</code></pre>
這個每行一階的縮進(jìn)(4 個空格或是 1 個制表符)梦谜,都會被移除丘跌,例如:
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
會被轉(zhuǎn)換為:
<p>Here is an example of AppleScript:</p>
<pre><code>tell application "Foo"
beep
end tell
</code></pre>
一個代碼區(qū)塊會一直持續(xù)到?jīng)]有縮進(jìn)的那一行(或是文件結(jié)尾)。
在代碼區(qū)塊里面唁桩, &
闭树、<
和 >
會自動轉(zhuǎn)成 HTML 實(shí)體,這樣的方式讓你非常容易使用 Markdown 插入范例用的 HTML 原始碼荒澡,只需要復(fù)制貼上报辱,再加上縮進(jìn)就可以了,剩下的 Markdown 都會幫你處理单山,例如:
<div class="footer">
? 2004 Foo Corporation
</div>
會被轉(zhuǎn)換為:
<pre><code><div class="footer">
? 2004 Foo Corporation
</div>
</code></pre>
代碼區(qū)塊中碍现,一般的 Markdown 語法不會被轉(zhuǎn)換,像是星號便只是星號米奸,這表示你可以很容易地以 Markdown 語法撰寫 Markdown 語法相關(guān)的文件昼接。
分隔線
你可以在一行中用三個以上的星號、減號悴晰、底線來建立一個分隔線慢睡,行內(nèi)不能有其他東西。你也可以在星號或是減號中間插入空格铡溪。下面每種寫法都可以建立分隔線:
* * *
***
*****
- - -
---------------------------------------