用簡短的一頁紙介紹
Markdown
基本語法
Markdown語法與Markdown編輯器
Markdown
是一種標記語法
,這種標記語法
需要使用相應的Markdown渲染器
(或稱為Markdown解析器
或Markdown編譯器
)將Markdown源文件
渲染成最終可讀的效果( 類似瀏覽器引擎
將HTML源文件
渲染成網頁
)。
Markdown編輯器
就是可以輸入Markdown源文件
并有相應的Markdown渲染器
渲染成最終可讀效果的一種工具,一般情況下,Markdown編輯器
都具有實時預覽
的功能(每次輸入或修改Markdown源文件
都會即時渲染成最終可讀效果)。
Markdown語法組成結構
排版
主要包括版面格式
、段落格式
、字符格式
三種組成結構,Markdown
本身沒有版面格式
的語法,不過很多markdown編輯工具
可以通過CSS
進行版面格式
設置(比如:ATOM
的MPE
插件)。
由于Markdown
是一種使用標記語法
來定義格式
的排版語法
,因此,就由格式定義字符
來定義格式
:
-
特殊定符
:-
格式定義字符
: 用于定義格式的特殊字符,Markdown
的格式定義字符
有`、*
、_
、()
、[]
、#
、+
、-
、.
、!
(其他擴展的Markdown渲染器
可能有^
、~
、:
等) -
轉義字符
: 用于轉義并顯示特殊字符(而不是使用特殊字符
來定義格式),Markdown
的轉義字符是\
(在Markdown
中并不是出現了特殊字符
就必須轉義才能顯示,而是在特殊字符
在定義上下文
中才需要顯式轉義
)
-
-
字符格式
: 也稱為行內格式
,用于行內某些字符的格式或行為 -
段落格式
: 用于一段或多段之間的格式 -
內嵌HTML
:Markdown
可以直接使用內嵌HTML
來定義Markdown
支持或不支持的結構
注意:在排版
中的段落
(Paragraph
)和換行
(Line Break
)是兩個不同的概念,換行
不一定換段落
(在Word
里換行
即換段落
),段落
是一個排版
元素,同一個段落
有共同的段落格式
(多個段落
也可以使用相同的段落格式
),一個段落
可以包括多行
。段落
和多行
之間的一個明顯差別就是不同的段落
之間使用的是段落間距
,而多行
之間使用的是行間距
(一般情況下,段落間距
會比行間距
大)。
在最初的Markdown
中進行換行
需要使用<br/>標簽
或在行末增加兩個或以上的空格
,否則中間沒有空行
(什么都沒有或只有空格
或TAB符
)的兩行會顯示在一行中(與HTML源文件
的渲染效果一樣)。而中間有空行
的多行即是不同的段落
在GFM
擴展中,不需要使用<br/>標簽
或在行末增加兩個或以上的空格
也可以顯示為多行
,但這多行是同一個段落
,只有中間有空行
的多行
才是不同的段落
。
Markdown字符格式
粗體
使用**
或__
(兩個下劃線
字符)包圍的字符將被渲染成粗體。
粗體
的Markdown
源文件:
**這是粗體**
__這也是粗體__
粗體
的渲染效果:
這是粗體
這也是粗體
斜體
使用*
或_
包圍的字符將被渲染成斜體
斜體
的Markdown
源文件:
*這是斜體*
_這也是斜體_
斜體
的渲染效果:
這是斜體
這也是斜體
備注:中文字符一般不使用斜體,因為中文的斜體不怎么好看
行內代碼
使用 ` (鍵盤中~
字符所在的按鍵)包圍的字符將被渲染成行內代碼
(HTML
里的<code>標簽
)。
行內代碼
的Markdown
源文件:
這是`行內代碼`
行內代碼
的渲染效果:
這是行內代碼
鏈接
Markdown
可以使用inline-sytle
和reference-style
兩種方式定義鏈接
。
inline-style
的語法:[link-text](url-link "optional-tips")
,其中:
-
link-text
: 顯示的鏈接文本
-
url-link
:url鏈接
-
optional-tips
: 當鼠標
放置在link-text
上顯示的提示
reference-style
的語法包括兩部分:
[link-text][reference-id]
-
[reference-id]:url-link "optional-tips"
: 在同一個文件的其他段落定義
鏈接
的Markdown
源文件:
這是[百度搜索](www.baidu.com "使用百度進行搜索")inline-style
這是[百度搜索][baidu]reference-style
[baidu]:www.baidu.com "使用百度進行搜索"
鏈接
的渲染效果:
這是百度搜索inline-style
這是百度搜索reference-style
Markdown段落格式
標題
Markdown
支持兩種標題定義方式:
-
setext-style
: 支持一級和二級標題,通過在單獨的一行中定義標題格式,多于一個=
字符定義為一級標題
、多于一個-
字符表示二級標題
-
atx-style
: 支持一級至六級標題,通過在標題行前的#
字符定義標題,一個#
定義一級標題
、兩個#
定義二級標題
,以此類推支持最多定義到六級標題
setext-style
標題的Markdown
源文件:
這是一級標題
=
這是二級標題
-
atx-style
的Markdown
源文件:
# 這是一級標題
## 這是二級標題
###### atx-style支持到六級標題
建議使用atx-style
定義標題,一方面atx-style
可以支持至六級標題
,另一方面atx-style
不需要使用單獨一行定義標題格式。
列表
列表的類型
列表分為有序列表
和無序列表
兩種基本列表,列表之間可以嵌套(通過增加1個TAB
或4個空格
的縮進
)形成多級列表
。
有序列表
使用非負數字
+.
+一個或以上空格
定義有序列表
,非負數字
不必要從1
遞增,Markdown
在渲染時會從1
開始自動遞增(當有序列表
的第一行是0.
時從0
開始遞增,多級列表
的第二級開始不支持從0
開始)。
有序列表的Markdown
源文件:
0. 這是一級有序列表
1. 這是二級有序列表
1. 這是三級有序列表
8. 這是一級有序列表
0. 這是一級有序列表
有序列表的渲染效果:
- 這是一級有序列表
- 這是二級有序列表
- 這是三級有序列表
- 這是二級有序列表
- 這是一級有序列表
- 這是一級有序列表
無序列表
使用一個*
或+
或-
加上一個以上空格
定義無序列表
。
無序列表的Markdown
源文件:
* 這是無序列表
+ 這是無序列表
- 這是無序列表
+ 這是一級無序列表
1. 這是二級有序列表
1. 這是二級有序列表
+ 這是一級無序列表
無序列表的渲染效果:
- 這是無序列表
- 這是無序列表
- 這是無序列表
- 這是一級無序列表
- 這是二級有序列表
- 這是二級有序列表
- 這是一級無序列表
引用
Markdown
使用email-style
(>
字符)定義引用
,引用
段落有條豎線展示這是一個引用
段落,引用
段落可以是多級的。
引用的Markdown
源文件:
>這是一級引用
>>這是二級引用
>>>這是三級引用
>>這還是三級引用
>這還是三級引用
>新的引用段落
引用的渲染效果:
這是一級引用
這是二級引用
這是三級引用
這還是三級引用
這還是三級引用
新的引用段落
圖片
Markdown
中嵌入圖片
的語法跟鏈接
的語法類似,差別在于嵌入圖片
比嵌入鏈接
前多了個!
特殊字符表示這是一個指向圖片
的url
。
圖片的Markdown
源文件:
這是一張使用inline-style鏈接的圖片
[圖片上傳失敗...(image-6ec809-1531624818276)]
這是一張使用reference-style鏈接的圖片
![當圖片無法顯示時出現這個文本][reference-id]
[reference-id]:image-url "optional-tips"
圖片鏈接
最好放在一個單獨的段落
中(而不僅僅是不同的行)以便正常顯示,因為如果跟文本
在同一個段落
中,有可能因為行高
不夠而無法將圖片
顯示完整。
分隔行
在單獨的一個段落中使用三個或多于三個*
或-
或_
將被渲染成分隔行
。
代碼塊
被 ``` 包圍的段落稱為代碼塊
(有些Markdown
解釋器支持語法高亮
)。
表格
Markdown
之父 John Gruber 和 Aaron Swartz 發布的Markdown
解釋器中沒有表格格式
,目前一般使用的表格格式
是GFM
的擴展
表格的Markdown
源文件:
表格字段一|表格字段二|表格字段三|表格字段四
--|:--|--:|:--:
默認居中對齊|左對齊|右對齊|居中對齊
cell|cell|cell|cell
表格的渲染效果:
表格字段01 | 表格字段02 | 表格字段03 | 表格字段04 |
---|---|---|---|
默認左對齊 | 左對齊 | 右對齊 | 居中對齊 |
cell | cell | cell | cell |