Markdown語法匯總
前言
我們在平時寫作的時候,可能你會傾向于使用 Markdown 這種富文本標記語言,因為它是純文本格式,而且可以很方便的生成具有很強可讀性的 html 文件。比如現在很多寫作網站、論壇都支持這種格式,比如簡書、CSDN,筆記類軟件,比如有道筆記等。絕大多數寫作類工具也都會支持 Markdown 寫法。Markdown 編輯器也有很多,如 Markdown Pad 等流行編輯器,流行操作系統(Win、Mac、Linux)上都有相應的免費 Markdown 編輯器,可自行搜索。大多數流行 IDE 也都有其支持插件,如 Android Studio、XCode 等。
對于我個人來說,作為一個程序猿,使用 Markdown 寫作已經成為一種習慣,比如用筆記軟件記筆記,在類似 CSDN 等技術博客網站上發表文章,都使用 Markdown 形式,本人甚至自己寫了一個小的基于 Bash 和 Python 的本地 Markdown 解釋器,這個解釋器可兼容 CSDN 上 Markdown 的所有語法格式,包括表格、UML圖等特性,所以我可以自由在本地記錄隨筆,并且后續可以有選擇性地發表。也就是說本地有可以檢索的所有筆記的文本文件副本,這對于快速搜索包含特定關鍵字的某篇日記有很大幫助。
在一開始使用 Markdown 過程中,偶爾會有忘記語法格式的情況,比如表格該怎么開始來的?代碼高亮是三個撇號嗎?所以還是要去上網查找語法格式,于是寫了這樣一篇語法匯總,旨在可以直觀呈現效果和對應的語法格式。你可以把它作為自己在使用 Markdown 初期時手頭的參考資料,希望對你開始或者熟練使用 Markdown 能有所幫助。
一、標題
在文字寫書寫不同數量的#可以完成不同的標題,如下:
一級標題
# 一級標題
二級標題
## 二級標題
三級標題
### 三級標題
四級標題
#### 四級標題
五級標題
##### 五級標題
六級標題
###### 六級標題
等號及減號也可以進行標題的書寫,不過只能書寫二級標題,并且需要寫在文字的下面,減號及等號的數量不會影響標題的基數,如下:
二級標題
二級標題
=========
二級標題
二級標題
---------
二、列表
無序列表的使用,在符號“-”后加空格使用。如下:
- 無序列表1
- 無序列表2
- 無序列表3
- 無序列表1
- 無序列表2
- 無序列表3
如果要控制列表的層級,則需要在符號“-”前使用空格。如下:
- 無序列表1
- 無序列表2
- 無序列表2.1
- 列表內容
- 列表內容
- 無序列表2.1
- 無序列表1
- 無序列表2
????- 無序列表2.1
????????- 列表內容
????????- 列表內容
有序列表的使用,在數字及符號“.”后加空格幾個,如下:
- 有序列表1
- 有序列表2
- 有序列表3
1. 有序列表1
2. 有序列表2
3. 有序列表3
有序列表如果要區分層級,也可以在數字前加空格,如下:
- 有序列表1
- 有序列表2
- 有序列表1.1
- 有序列表1.2
- 有序列表1.3
- 有序列表3
1. 有序列表1
2. 有序列表2
????1. 有序列表1.1
????2. 有序列表1.2
????3. 有序列表1.3
3. 有序列表3
三、引用
引用的格式是使用符號“>”后面書寫文字,及可以使用引用。如下:
以下是引用示例:
這個是引用
是不是和電子郵件中的
引用格式很像
使用引用的語法:
> 這個是引用
> 是不是和電子郵件中的
> 引用格式很像
以下是多重引用示例:
多層引用
- 一重
多層引用
- 二重
多層引用
- 三重
使用多重引用語法:
> 多層引用
> - 一重
>> 多層引用
>> - 二重
>>> 多層引用
>>> - 三重
四、粗體與斜體
粗體的使用是在需要加粗的文字前后各加兩個“”,而斜體的使用則是在需要斜體的文字前后各加一個“”,如果要使用粗體和斜體,那么就是在需要操作的文字前后各加三個“*”。如下:
這個是粗體
這個是斜體
這個是粗體加斜體
**這個是粗體**
*這個是斜體*
***這個是粗體加斜體***
五、鏈接與圖片
在文中直接加鏈接,中括號中是需要添加鏈接的文字,圓括號中是需要添加的鏈接,如下:
[link text](http://example.com/ "optional title")
在引用中加鏈接,第一個中括號添加需要添加的文字,第二個中括號中是引用鏈接的id,之后在引用中,使用id加鏈接:如下:
[link text][id]
[id]: http://example.com/ "optional title here"
[link text][id]
[id]: http://example.com/ "optional title here"
在文中直接引用鏈接,直接使用尖括號,把鏈接加入到尖括號中就可以實現,如下:
http://example.com/ or address@example.com
插入互聯網上圖片,格式如下:

![這里寫圖片描述][test-icon]
[test-icon]: http://img.blog.csdn.net/xxx.png
括號中的圖片地址可以是網絡的,在本地使用時也可以是本地的文件路徑。
六、代碼塊
用TAB鍵起始的段落,會被認為是代碼塊,如下:
<php>
echo “hello world";
</php>
????<php>
????????echo “hello world";
????</php>
如果在一個行內需要引用代碼,只要用反引號`引起來就好,如下:
Use the printf()
function.
Use the `printf()` function.
七、分割線
可以在一行中用三個以上的星號、減號、底線來建立一個分隔線,同時需要在分隔線的上面空一行。如下:
---
****
___
八、代碼高亮
在需要高亮的代碼塊的前一行及后一行使用三個反引號“`”,同時第一行反引號后面表面代碼塊所使用的語言,如下:
以下是一段 ruby 代碼塊:
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
以下是一段 bash 代碼塊:
local mds=$(find . -name *.md)
local count=$(echo ${mds} | wc -w)
if [ ${count} -eq 1 ]; then
FILE_IN=${mds}
echo "檢索到 md 文檔: ${mds}"
else
printUsage
exit 1
fi
```bash
local mds=$(find . -name *.md)
local count=$(echo ${mds} | wc -w)
if [ ${count} -eq 1 ]; then
????FILE_IN=${mds}
????echo "檢索到 md 文檔: ${mds}"
else
????printUsage
????exit 1
fi
```
以下是一段 java 代碼塊:
public class CodeBlock{
public static void main(String[] args){
System.out.println("Test java code block");
}
}
```java
public class CodeBlock{
????public static void main(String[] args){
????????System.out.println("Test java code block");
????}
}
```
九、表格
可以使用冒號來定義表格的對齊方式,如下:
Tables | Are | Cool |
---|---|---|
col 3 is | right-aligned | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |
| Tables | Are | Cool |
| ------------- |:-------------:| -----:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
十、繪制UML
(這個特性是 CSDN 的 Markdown 書寫所支持的語法,其它平臺不一定支持或有差異。)
可以渲染時序圖:
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
```sequence
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
```
或者流程圖:
st=>start: Start|past:>http://www.google.com[blank]
e=>end: End:>http://www.google.com
op1=>operation: My Operation|past
op2=>operation: Stuff|current
sub1=>subroutine: My Subroutine|invalid
cond=>condition: Yes
or No?|approved:>http://www.google.com
c2=>condition: Good idea|rejected
io=>inputoutput: catch something...|request
st->op1(right)->cond
cond(yes, right)->c2
cond(no)->sub1(left)->op1
c2(yes)->io->e
c2(no)->op2->e
```flow
st=>start: Start|past:>http://www.google.com[blank]
e=>end: End:>http://www.google.com
op1=>operation: My Operation|past
op2=>operation: Stuff|current
sub1=>subroutine: My Subroutine|invalid
cond=>condition: Yes
or No?|approved:>http://www.google.com
c2=>condition: Good idea|rejected
io=>inputoutput: catch something...|request
st->op1(right)->cond
cond(yes, right)->c2
cond(no)->sub1(left)->op1
c2(yes)->io->e
c2(no)->op2->e
```
關于
2018-03-10 周六 (于北京·大興)