Markdown 是一種純文本格式的標(biāo)記語言奏赘,通過簡單的標(biāo)記語法,它可以使普通文本內(nèi)容具有一定的格式惧蛹。一份 Markdown 文檔可以很方便的導(dǎo)出為 HTML 扇救、Word刑枝、圖像香嗓、PDF、Epub 等多種格式的文檔装畅,非常便于文章的發(fā)布靠娱。
Markdown 具有一系列衍生版本,不同版本之間基本兼容掠兄,但在一些語法和渲染效果上略有差別像云,另外不同的編輯器顯示效果也會有區(qū)別锌雀。
本篇文章盡量全的介紹 Markdown 的各個語法,但有些編輯器可能不支持其中某些語法迅诬。本文內(nèi)容是根據(jù) Markdown 的語法文檔和一些其它資料整理得到腋逆,內(nèi)容也會不斷的更新。
標(biāo)題
Markdown標(biāo)題有幾種寫法 ("atx", "atx_closed", "setext") :
第一種 ("atx") 是在想要設(shè)置為標(biāo)題的文字前面加 #侈贷,這種寫法支持六級標(biāo)題惩歉,注意要在 # 和文字之間加至少一個空格:
# 一級標(biāo)題
## 二級標(biāo)題
### 三級標(biāo)題
#### 四級標(biāo)題
##### 五級標(biāo)題
###### 六級標(biāo)題
第二種 ("setext") 是在想要設(shè)置為標(biāo)題的文字下面用多個 = 和 - 分隔,這種寫法只能寫到二級標(biāo)題俏蛮,= 和 - 的個數(shù)沒有限制撑蚌,只要大于一個就可以:
一級標(biāo)題
==========
二級標(biāo)題
----------
第三種 ("atx_closed") 是在想要設(shè)置為標(biāo)題的文字前后都加 #,這種寫法也支持六級標(biāo)題搏屑,注意要在文字和前后的 # 之間加至少一個空格:
# 一級標(biāo)題 #
## 二級標(biāo)題 ##
### 三級標(biāo)題 ###
#### 四級標(biāo)題 ####
##### 五級標(biāo)題 #####
###### 六級標(biāo)題 #######
標(biāo)題的三種寫法可以混用争涌,但為了保持統(tǒng)一性,不建議混用辣恋,但用第二種寫法寫到二級標(biāo)題后亮垫,還可以使用第一種或第三種寫法繼續(xù)寫后面的標(biāo)題。
段落和換行
Markdown 中用一個或多個空行劃分不同的段落(空行的含義就只要是看起來是空行就行了伟骨,即使包含了空格或者水平制表符等空白符也是空行)包警,普通段落不應(yīng)該使用縮進。
關(guān)于換行底靠,Markdown 并不會將段落的每個換行都轉(zhuǎn)換為 <br /> 標(biāo)簽害晦,如果確實需要在行尾輸入 <br /> 標(biāo)簽,只需要在行尾加兩個及以上的空格暑中,然后換行壹瘟。
強調(diào)
傾斜
傾斜是在文字左右用一個 *(星號)或 _(下劃線)包起來,文字與星號或下劃線之間沒有空格:
*傾斜* _傾斜_
會得到:
傾斜 傾斜
加粗
加粗是在文字左右用兩個 *(星號)或 _(下劃線)包起來鳄逾,文字與星號或下劃線之間沒有空格:
**加粗** __加粗__
會得到:
加粗 加粗
加粗傾斜
加粗傾斜是在文字左右用三個 *(星號)或 _(下劃線)包起來稻轨,文字與星號或下劃線之間沒有空格:
***加粗傾斜*** ___加粗傾斜___
會得到:
加粗傾斜 加粗傾斜
刪除線
刪除線是在文字左右用兩個 ~~ 包起來,文字與 ~~ 之間沒有空格:
~~刪除線~~
會得到:
刪除線
腳注
腳注是對文本的補充說明雕凹,格式如下:
面朝大海殴俱,春暖花開[^腳注]
[^腳注]: 海子
會得到:
面朝大海,春暖花開[1]
注意:
- 這里有些編輯器會自動給腳注進行編號枚抵,整篇文檔從 1 開始編號线欲,但有的編輯器會直接顯示腳注的名字;
- 腳注的定義與腳注的內(nèi)容至少隔一行汽摹,也可以將整篇文檔的腳注統(tǒng)一寫在文檔結(jié)尾處李丰,編輯器會自動把腳注的內(nèi)容放到文檔的最后。
引用
用法是在文字前面加一個 >逼泣,注意 > 是英文格式下的右尖括號趴泌,括號和文字之間至少有一個空格:
> 面朝大海舟舒,春暖花開。
會得到:
面朝大海嗜憔,春暖花開秃励。
引用是一個區(qū)塊,可以放很多東西吉捶,如標(biāo)題莺治、列表、代碼塊等等:
> ## 二級標(biāo)題
> * 無序列表
會得到:
二級標(biāo)題
- 無序列表
引用可以多層嵌套帚稠,多層嵌套時谣旁,多個 > 是不需要連在一起的,只需要在同一行就可以:
> 引用一
>> 引用二
>>> 引用三
會得到:
引用一
引用二
引用三
列表
列表分為 有序列表 和 無序列表滋早。
無序列表
無序列表可以用 *榄审、+、- 創(chuàng)建杆麸,三個符號可以混用搁进,但建議上下文統(tǒng)一,符號和文字之間加至少一個空格或水平制表符:
* 無
- 序
+ 列
* 表
會得到:
- 無
- 序
- 列
- 表
有序列表
有序列表用數(shù)字和點來創(chuàng)建昔头,需要注意的是數(shù)字后面只能是英文的點饼问,且點和文字之間至少加一個空格,另外有序列表的序號是根據(jù)第一行的數(shù)字確定的揭斧,后面的數(shù)字序號對于最終生成 HTML 是沒有影響的. 比如下面的列表創(chuàng)建時序號是亂的莱革,但創(chuàng)建后序號會顯示為 2. 3. 4. 5. (這一點很多編輯器會自動更正或填充),點和文字之間加至少一個空格或水平制表符:
2. 有
2. 序
3. 列
3. 表
會得到:
- 有
- 序
- 列
- 表
列表嵌套
列表可以嵌套使用讹开,只需要在上一級和下一級之間打兩個空格即可(或者一個水平制表符)(有的語法需要三個空格或四個空格)盅视,有序列表和無序列表可以互相嵌套:
* 1
* a
* b
* 2
1. a
2. B
會得到:
- 1
- a
- b
- 2
- a
- B
如果列表項中包含引用,引用標(biāo)記 > 需要縮進旦万,如果列表項中有代碼塊闹击,代碼塊需要雙倍縮進,例如:
* 孔子說過:
> 毋意成艘,毋必赏半,毋固,毋我淆两。
會得到:
- 孔子說過:
毋意断箫,毋必,毋固琼腔,毋我瑰枫。
另外,如果一個列表項里包含多個段落丹莲,那么每個段落都需要縮進光坝,縮進量與第一段一致(用空格或制表符):
* 段落一
段落二
會得到:
-
段落一
段落二
任務(wù)列表
任務(wù)列表通過無序列表和中括號 [] 來定義,中括號中間加 x 表示完成:
* [ ] 任務(wù)1
* [ ] 任務(wù)2
* [x] 任務(wù)3已完成
會得到:
- 任務(wù)1
- 任務(wù)2
- 任務(wù)3已完成
代碼塊
單行代碼用一個 `(反引號)包起來甥材,或者行前加四個空格或一個水平制表符:
`a=1`
用反引號可以在行內(nèi)顯示代碼盯另,如:
如果`a=1`,`b=2`洲赵,那么`a+b=3`
會得到:
如果a=1
鸳惯,b=2
,那么a+b=3
多行代碼用三個 `(反引號)包起來叠萍,反引號單獨一行芝发,或者在每行代碼前加四個空格或一個水平制表符:
```
a=1
b=2
```
會得到:
a=1
b=2
反引號后面可以寫注釋,這樣可以給代碼塊添加相應(yīng)語言的代碼高亮苛谷,例如:
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
會得到:
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
水平線
水平線可以由 *辅鲸、 - 、_(星號腹殿,減號独悴,下劃線)這三個符號的至少三個表示,注意至少要三個锣尉,且不需要連續(xù)刻炒,中間有空格也可以,但生成水平線的符號必須獨占一行:
***
- - -
_ _ _
會得到:
鏈接
Markdown 支持兩種鏈接形式: 內(nèi)聯(lián) 和 引用 自沧。
內(nèi)聯(lián):
[鏈接名](鏈接地址 “鏈接title” )
鏈接title 是可選的內(nèi)容坟奥,是當(dāng)指針停留在鏈接處時顯示的內(nèi)容;
引用:
[鏈接名][鏈接id]
[鏈接id]: 鏈接地址 “鏈接title”
[鏈接id]: 鏈接地址 '鏈接title'
[鏈接id]: 鏈接地址 (鏈接title)
鏈接id 有三種定義方式(如上)拇厢,定義時冒號后面加一個以上的空格或水平制表符筏勒;
鏈接id 可以包含字母, 數(shù)字, 空格, 和標(biāo)點符號,字母不是大小寫敏感的旺嬉,鏈接id 的定義可以在文章的任意位置管行,一般直接放在引用位置的下面;
鏈接名也可以包含字母, 數(shù)字, 空格, 和標(biāo)點符號邪媳,鏈接名 和 鏈接id 的中括號間可以有空格捐顷;
引用的鏈接形式中可以隱含鏈接名稱,可以忽略 鏈接id雨效,這時 鏈接名 本身被用于 鏈接id迅涮。引用 鏈接id 時只用一對空的中括號就可以了,
例如, 要鏈接 "Google" 這個詞到 google.com 網(wǎng)站, 只用這樣寫:
[Google][]
同時這樣定義 鏈接id:
[Google]: http://google.com/
另外徽龟,也可以將網(wǎng)址直接用 <>(尖括號)包起來叮姑,也可以顯示為鏈接,甚至直接寫出網(wǎng)址也顯示為鏈接:
<http://www.baidu.com>
圖片
圖片跟鏈接格式類似,也有 內(nèi)聯(lián) 和 引用 兩種形式传透,只不過在圖片名前要加 !(英文嘆號)耘沼。
內(nèi)聯(lián):
![圖片名](圖片地址 "圖片title")
引用:
![圖片名][圖片id]
[圖片id]:圖片地址 “圖片title”
圖片名 是指顯示在圖片下方的描述文字,可選朱盐;圖片title 是當(dāng)指針停留在圖片上時顯示的內(nèi)容群嗤,可選。
Markdown 沒有語法指定圖片尺寸兵琳,如果需要指定圖片尺寸, 可以使用 HTML <img> 標(biāo)簽狂秘。
反斜杠轉(zhuǎn)義
Markdown 中可以使用反斜杠轉(zhuǎn)義 Markdown 語法符號為字面量。Markdown 為以下字符提供反斜杠轉(zhuǎn)義:
\\ backslash(反斜杠)
\` backtick(反引號)
\* asterisk(星號)
\_ underscore(下劃線)
\{\} curly braces(花括號)
\[\] square brackets(方括號)
\(\) parentheses(圓括號)
\# hash mark(井號)
\+ plus sign(加號)
\- minus sign (hyphen)(減號)
\. dot(點)
\! exclamation mark(驚嘆號)
以上這些符號在前面加反斜杠后就會顯示本身的字面形式躯肌,而不會作為 Markdown 的語法符號者春。
表格
| 表頭 | 表頭 | 表頭 |
| :---- | :---: | ---: |
| 靠左 | 居中 | 靠右 |
| 內(nèi)容 | 內(nèi)容 | 內(nèi)容 |
會得到:
表頭 | 表頭 | 表頭 |
---|---|---|
靠左 | 居中 | 靠右 |
內(nèi)容 | 內(nèi)容 | 內(nèi)容 |
第二行分割表頭和內(nèi)容,-(減號) 有一個就行清女,也可以多加幾個使其對齊,文字默認(rèn)居左钱烟,- 兩邊加 :(冒號)表示文字居中,- 右邊加 : 表示文字居右校仑,原生語法兩邊的 | 必須加忠售,但目前大多數(shù)語法兩邊的 | 不加也可以,不同的解釋器顯示的表格會有所區(qū)別迄沫。
應(yīng)用 HTML 標(biāo)簽
可以直接在 Markdown 文檔里應(yīng)用 HTML 標(biāo)簽稻扬,以達(dá)到更好的表現(xiàn)效果,但不同的編輯器可能支持的標(biāo)簽會有區(qū)別羊瘩。
上泰佳、下標(biāo)
上、下標(biāo)可以通過 HTML 的 <sup>
和 <sub>
標(biāo)簽實現(xiàn):
這是<sup>上標(biāo)</sup>文本
這是<sub>下標(biāo)</sub>文本
會得到:
這是上標(biāo)文本
這是下標(biāo)文本
傾斜尘吗、加粗逝她、下劃線
傾斜、加粗睬捶、下劃線可以通過 HTML 的 <i>
黔宛、<b>
、<u>
標(biāo)簽實現(xiàn):
<i>傾斜</i>
<b>加粗</b>
<i><b>傾斜加粗</b></i>
<u>下劃線</u>
高亮標(biāo)記
高亮標(biāo)記可以通過 HTML 的 <mark>
標(biāo)簽實現(xiàn):
<mark>高亮標(biāo)記</mark>
鍵盤文本
鍵盤文本可以通過 HTML 的 <kbd>
標(biāo)簽實現(xiàn):
<kbd>鍵盤文本</kbd>
按鈕
按鈕可以通過 HTML 的 <button>
標(biāo)簽實現(xiàn):
<button type="button">按鈕</button>
注意需要指明 type
屬性擒贸。
一些規(guī)范
- MarkDown 文件均使用 .md 作為后綴
- 標(biāo)題與緊貼的上下正文使用空行隔開臀晃,# 號和文字之間一個空格連接
- 整篇文章標(biāo)題格式要統(tǒng)一
- 普通文本換行,使用行末尾兩個空格觸發(fā)
- 定義列表時上下文使用一致的符號介劫,縮進也要統(tǒng)一
- 列表塊前后整行隔開
- 代碼塊前后整行隔開
本文介紹的 Markdown 語法不同的衍生版本或不同的解釋器會有所區(qū)別徽惋,有些會不支持,有些可能需要一些擴展工具才能實現(xiàn)座韵。
參考
-
海子 ?