[TOC]
## 簡介
Markdown是一種可以使用普通文本編輯器編寫的標記語言,通過簡單的標記語法,它可以使普通文本內容具有一定的格式。
Markdown具有一系列衍生版本,用于擴展Markdown的功能(如表格、腳注、內嵌HTML等等),這些功能原初的Markdown尚不具備,它們能讓Markdown轉換成更多的格式
## 為什么我選擇它(Markdown的優點)
* 專注你的文字內容而不是排版樣式,安心寫作。
* 輕松的導出 HTML、PDF 和本身的 .md 文件。
* 純文本內容,兼容所有的文本編輯器與字處理軟件。
* 隨時修改你的文章版本,不必像字處理軟件生成若干文件版本導致混亂。
* 可讀、直觀、學習成本低。
## 使用上的小問題
Markdown具有一系列的衍生版本,擁有多個版本的解析器和生成器,導致目前不同的Markdown工具集成了不同的功能(基礎功能大致相同)。使用這些工具的時候要注意你要用的功能當前工具是否支持。
## 工具
* window: MarkdownPad、MarkPad
* IOS : Mou、Byword
* Web端:簡書、看云、有道云筆記等
## 參考文檔
* [Markdown官方語法文檔(英文)] [note_url_1]
* [中文的語法文檔] [note_url_cn]
[note_url_1]: http://daringfireball.net/projects/markdown/syntax
[note_url_cn]: http://www.appinn.com/markdown/
## 常用語法
### 段落與換行
段落與段落之間用一個以上的空行表示。
例如:
```
這是一個段落
這是一個段落
```
會被解釋為:
```
<p>這是一個段落</p>
<p>這是一個段落</p>
```
不隔一個空行的換行,在一些編輯器中會被解釋為換行,即插入一個`<br/>`標簽;而在另外一些編輯器中則會被解釋為插入一個空格,對于這種編輯器如果只是要換行,可在行尾加兩個空格,即可段內換行。
---
### 粗體和斜體
可以使用星號`*`或下劃線`_`指定粗體或者斜體。被`*`或`_`包住的字詞會轉成斜體。用`**`或`__`包住的則為粗體。你可以隨便用你喜歡的樣式,唯一的限制是,你用什么符號開啟標簽,就要用什么符號結束。
例如:
*這個是一個斜體的文字*
**這是一個粗體的文字**
_這是一個斜體的文字_
__這是一個粗體的文字__
*什么符號開啟標簽,什么符號結束_
強調也可以插在**文字**中間
_**粗體并斜體**_
如果有 * 空格 * 的話會被當成普通的符號
使用反斜杠\*直接插入\*星號
結果:
*這個是一個斜體的文字*
**這是一個粗體的文字**
_這是一個斜體的文字_
__這是一個粗體的文字__
*什么符號開啟標簽,什么符號結束_
強調也可以插在**文字**中間
_**粗體并斜體**_
如果有 * 空格 * 的話會被當成普通的符號
使用反斜杠\*直接插入\*星號
---
### 標題
Mark支持1~6級標題。通過在行首添加不同的`#`表示。你也可以選擇類似閉合樣式的標題方式,在行尾加入`#`,這只是為了美觀。行尾的`#`不需要和行首的一樣。標題級別由行首的`#`個數決定。
此外,1級標題和2級標題可以在標題下一行用底線的形式插入`=`(一級標題)或者`-`(二級標題)。任何數量的`=`和`-`都可以實現效果。
例如:
```
# 一級標題
一級標題2
=
## 二級標題
### 三級標題
###### 六級標題
```
結果:
# 一級標題
一級標題2
=
## 二級標題
### 三級標題
###### 六級標題
---
### 引用
在行首插入`> `表示引用
例如:
> 這是一個引用示例
結果:
```xml
<root>
<card type=""/>
</root>
```
> 這是一個引用示例
引用可以使用嵌套,只要根據層次加上不同數量的`>`
例如:
>> > 引用嵌套
結果:
>>> 引用嵌套
---
在引用中也可以使用其他的Markdown語法,包括標題、列表、代碼段等。
例如:
> ## 這是一個標題。
>
> 1. 這是第一行列表項。
> 2. 這是第二行列表項。
>
> 以下是一個代碼段:
>
> public function example():void
> {
> trace("this is a example");
> }
結果:
> ## 這是一個標題。
>
> 1. 這是第一行列表項。
> 2. 這是第二行列表項。
>
> 以下是一個代碼段:
>
> public function example():void
> {
> trace("this is a example");
> }
---
### 有序列表和無序列表
#### 無序列表
無序列表使用`*`、`+`或`-`作為列表標記。
例如:
* 無序列表1
* 無需列表2
等同于
+ 無序列表1
+ 無序列表2
等同于
- 無序列表1
- 無序列表2
結果:
* 無序列表1
* 無序列表2
#### 有序列表
有序列表使用數字接一個英文的句號
例如:
1. 貓
2. 狗
3. 雞
結果:
1. 貓
2. 狗
3. 雞
注:在有序列表上使用的數字并不會影響輸出的結果。
如果你寫成:
3. 貓
1. 狗
9. 雞
或者是:
1. 貓
1. 狗
1. 雞
你都會得到完全相同的輸出結果(建議有序列表第一個項目還是從1開始寫起,因為有的平臺的Markdown可能會支持有序列表的start屬性)。
比如在有道云協作中的輸出結果為:

而在看云中的輸出結果為:

有的時候會可能不小心產生列表
例如:
110. 這是一個報警電話號碼
120. 這是一個急救電話號碼
結果:
110. 這是一個報警電話號碼
120. 這是一個急救電話號碼
要避免這種狀況可以在句號前面加上一個反斜杠:
110\. 這是一個報警電話號碼
120\. 這是一個急救電話號碼
結果:
110\. 這是一個報警電話號碼
120\. 這是一個急救電話號碼
---
### 表格
注意:原生的Markdown并沒有制作表格的功能。不過現在大部分衍生出來的編輯器基本都具備這功能。
使用Markdown制作表格的示例如下:
```
|名字|性別|年齡|身高|
|---|:---:|---:|:---|
|小明|男|18|160|
|小王|男|21|161|
```
生成的表格如下:
|名字|性別|年齡|身高|
|---|:---:|---:|:---|
|小明|男|18|160|
|小王|男|21|161|
表格代碼中`|---|` 決定了此列表格的對齊方式。
* `|---|` 默認方式對齊
* `|:---|` 左對齊
* `|:---:|` 居中對齊
* `|---:|` 右對齊
---
### 行內代碼段和代碼區域
#### 行內代碼
單行的代碼在代碼的頭部和尾部添加一個 `
例如:
```
這是一個單行代碼塊的示例:`trace("Hello World");`
```
這是一個單行代碼塊的示例:`trace("Hello World");`
#### 代碼區域
有兩種方式標記代碼區域。一種是行首縮進四個空格或一個制表符就可以了,代碼區域會一直持續到沒有縮進的那一行或文件結尾。
除了縮進4個空格或者一個制表符外,還有一種為在代碼開頭上一行輸入` ``` `或者` ~~~ ` ,在代碼結尾下一行輸入` ``` `或` ~~~ ` ,將代碼包裹起來。
> 多行代碼標簽后面必須換行
例如:
```
···
public function example():void
{
trace("這是一個多行代碼塊的示例");
}
···
```
結果:
```
public function example():void
{
trace("這是一個多行代碼塊的示例");
}
```
---
### 分割線
你可以在一行中用三個以上的星號、減號、下劃線來建立一個分割線。行內不能用其他東西。你也可以在星號或者減號中間插入空格。
以下每種寫法都可以建立分割線:
***
* * *
---
-------------------
___
---
### 鏈接
Markdown支持兩種形式的鏈接語法:行內式和參考式。
不管使用哪一種,鏈接文字都是用`[]`方括號來標記
#### 行內式
要建立一個行內式的鏈接,只要在方括號后面緊接圓括號并插入網址鏈接即可,如果還要加上鏈接的title文字,只要在網址后面,用雙引號把title文字包起來。
例如:
鏈接到[百度](https://www.baidu.com"這是title文字")示例
結果:
鏈接到[百度](https://www.baidu.com"這是title文字")示例
#### 參考式
參考式的鏈接是在鏈接文字的方括號后面再接上一個方括號,而在第二個方括號里面填入用以辨識鏈接的標記。接著,你可以在文件的任意位置,把這個標記的鏈接內容定義出來。因為鏈接的定義可以放在文件中的任何地方,所以你可以把它放在文件的最后面,就像注解一樣。
> 參考式鏈接在有的平臺的編輯器上無法正常使用,如有道云協作
例如:
這是一個參考式[鏈接][link_1] 的示例
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
[link_1]: https://www.baidu.com/ "這是title文字"
結果:
這是一個參考式[鏈接][link_1]的示例
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
你可以在任意位置將這個標記的鏈接內容定義出來
[link_1]: https://www.baidu.com/
#### 隱式鏈接標記功能
隱式鏈接標記功能可以讓你省略指定鏈接標記,這種情況下,鏈接標記會等同于鏈接文字,要用隱式鏈接標記只需要在鏈接文字后面加上一個空的方括號即可。
例如:
這是一個鏈接到[百度][] 的例子。
[百度]: https://www.baidu.com/ "title"
---
### 插入圖片
插入圖片和鏈接很相似。也允許使用兩種樣式:行內式和參考式。
#### 行內式
``
例如:

結果:

#### 參考式
```
![代替文字][id]
[id]: 鏈接地址 "title"
```
例如:
![這是一張圖片][img]
[img]: http://i1.piimg.com/567571/7d83a354ce3ed2a6.png
結果:
![這是一張圖片][img]
[img]: http://i1.piimg.com/567571/7d83a354ce3ed2a6.png "title"
---
### 腳注
當我們在編寫文檔時,需要針對某些名詞或者例子做出注釋,比如說選自某本書或者文章等等,此時可以用到腳注功能。添加腳注只需要在想要加腳注的文字后面插上`[^腳注標記]`。然后你可以在文件任意位置將腳注內容寫出來,腳注內容會顯示在文件的最后。
> 注意:標注的Markdown中沒有腳注,各個平臺擴展的定義可能有所不同。
例如:
需要添加腳注的文字[^腳注01]
[^腳注01]: 這是一個腳注的注釋
結果:
需要添加腳注的文字[^03]
[^03]: 這是一個腳注的注釋
> ps:看云沒有腳注所以看不到結果,附上別的平臺工具的腳注效果圖一張:

---
### 轉義
markdown支持在以下字符前面插入反斜杠
```
\ 反斜線
` 反引號
* 星號
_ 底線
{} 花括號
[] 方括號
() 括弧
# 井字號
+ 加號
- 減號
. 英文句點
! 驚嘆號
```
插入之后,將不再解析這些字符,而是原樣輸出。
---
### 內聯HTML
markdown 的語法簡潔,但有其局限性,所以特意保留了內聯html這種方式。任何html標簽及其內容,都會原樣輸出到結果中。也就是說,標簽中的星號等作為markdown結構的符號,以及構成html標簽和實體的符號,都不會做任何轉義。
例子:
```
<font color="red">顏色</font>文字示例
```
效果:
<font color="red">顏色</font>文字示例