Markdown 簡介
Markdown 是一種用來寫作的輕量級標記語言, 用一些簡單的標記, 來代替常見的排版格式, 它使我們專心于碼字, 不必花太多精力在排版上.
Markdown 文檔是純文本文件, 直接在記事本里, 就可以編寫 Markdown 文檔, 但是 Markdown 文檔中的標記需要 Markdown 解析器(或稱為渲染器)才能變成成排版的樣式, 很多 Markdown 編輯器內(nèi)置了解析器, 在寫 Markdown 文檔的同時, 就可以預(yù)覽排版格式了. 這里推薦幾個比較不錯的 Markdown 編輯器:
- Typora (Windows, Mac, Linux)
- Yu Writer (Windows, Mac, Linux)
- StackEdit (Web)
- MarkdownPad (Windows)
- Cmd Markdown (Windows, Mac, Linux, Web)
使用上述軟件, 就可以進行 Markdown 的編寫了. 在這些編輯器里寫 Markdown 文檔就好像在 Word 里寫文檔一樣, 只不過需要使用 Markdown 標記語法來實現(xiàn)排版.
本文不會介紹 Markdown 的原理, 只需要知道, 使用上述編輯器, 配合相應(yīng)的語法, 就可以寫出有漂亮的排版格式的 Markdown 文檔了.
下面是一些 Markdown 常用語法, 掌握這些語法, 就可以滿足90%以上的使用場景. 如果想了解詳細的文檔, 可以在閱讀過本文后, 參考:
關(guān)于 Markdown 的原理和擴展語法, 也可參考我的這篇文章: Markdown 擴展語法
標題
在 # 后面加一個空格, 然后寫的文字, 會被渲染成標題樣式. 共支持六級標題, 從 # 到 ######. 例如:
# 一級標題
## 二級標題
### 三級標題
#### 四級標題
##### 五級標題
###### 六級標題
效果如下:
一級標題
二級標題
三級標題
四級標題
五級標題
六級標題
段落 Paragraph
直接寫的文字會形成段落, 一個 Markdown段落是由一個或多個連續(xù)的文本行組成, 它的前后要有一個或以上的空行(無論有多少個空行, 都會被解析成一個空行).
在文本中使用回車鍵換行, 最終不會被解析成換行. 如果在一個段落中需要換行, 需要按兩個或以上的空格, 然后按回車鍵. 另外, 使用兩個空格進行換行, 不會導(dǎo)致分段, 依然是同一段落.
文本樣式
Markdown 中可以給文本添加樣式:
- 被 * 或 _ 包裹起來的文本會被渲染成斜體
- 被 ** 或 __ 包裹起來的文本會被渲染成粗體
- 被 ~~ 包裹起來的文本會被渲染出刪除線
例如:
*這是斜體的文字*
**這是加粗的文字**
~~這是刪除的文字~~
效果為:
這是斜體的文字
這是加粗的文字
這是刪除的文字
Markdown 標準語法不支持下劃線, 但是有些解析器支持特殊的語法, 這里不做介紹.
轉(zhuǎn)義字符
如果文本中某些字符就是想要正常顯示, 不希望被解析成有特殊含義的標記,
可以使用 \ 進行轉(zhuǎn)義, 例如:
\*\*使用 \ 轉(zhuǎn)義 * 號\*\*
由于文字兩邊的 * 號前面都加了"", "*" 不再用來表示粗體, 顯示的效果為:
**使用 \ 轉(zhuǎn)義 * 號**
列表
無序列表
在文字前面加 * 或者 - 或者 + , 然后輸入空格, 再寫文字, 就會變成無序列表, 例如:
* 列表項1
- 列表項2
+ 列表項3
效果為:
- 列表項1
- 列表項2
- 列表項3
建議: 如無特殊需要, 最好用同一種列表表示符號.
有序列表
數(shù)字后面加個點(英文句號), 然后輸入空格, 再寫文字, 例如:
1. 列表項1
2. 列表項2
3. 列表項3
效果為:
- 列表項1
- 列表項2
- 列表項3
多級列表
列表可以使用兩個空格或者tab鍵進行縮進, 形成多級列表:
* 一級列表項1
* 二級列表項1
* 二級列表項2
* 一級列表項2
* 二級列表項1
* 二級列表項2
- 一級列表項1
- 二級列表項1
- 二級列表項2
- 一級列表項2
- 二級列表項1
- 二級列表項2
列表段落
列表可以和段落結(jié)合起來, 甚至一個列表項里可以有多個段落, 例如:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
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
* 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,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 Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
注意: 如果一個列表項里有多個段落, 第二個及以后的段落前面要有縮進. 雖然這是標準語法, 但是不建議一個列表項里有多個段落, 因為有的解析器有 bug, 解析的效果比較差.
引用
在 >
后面加一個空格, 然后寫文字, 會被渲染成引用樣式, 例如:
> 這段文字是引用
> **在引用中換行同樣可以使用兩個空格, 也可以使用粗體**
效果為:
這段文字是引用
在引用中換行同樣可以使用兩個空格, 也可以使用粗體
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.
效果為:
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 標記, 例如:
> ## 這是一個標題
>
> 1. 這是第一行列表項
> 2. 這是第二行列表項
效果為:
這是一個標題
- 這是第一行列表項
- 這是第二行列表項
同理, 引用由也可以使用引用, 渲染效果就是就是層層嵌套, 這里不再演示.
鏈接和圖片
Markdown 中可以插入鏈接和圖片.
普通鏈接
語法如下
[text](link)
text 指的是顯示出來的鏈接名稱, 后面 () 里的是真正的鏈接地址
例如: 百度首頁
如果不需要顯示鏈接名稱, 可以直接貼網(wǎng)址, 如:
百度首頁: https://www.baidu.com
參考鏈接
如果一個鏈接在一篇文章中出現(xiàn)多次, 可以定義為參考鏈接, 語法如下:
首先需要定義參考鏈接, 語法為:
[鏈接id]:link
例如:
[baidu]:http://www.baidu.com
注意, 定義鏈接時, id 一定要唯一, 不能有兩個一樣的參考鏈接 id, 其次, 定義的鏈接上下一定要有空行, 最后, 定義的鏈接不會被顯示出來.
定義好參考鏈接后, 就可以使用了, 使用時, 先用一個中括號表示鏈接文字, 后面再跟一個[], 里面寫參考鏈接的 id, 例如:
[這是一個百度首頁][baidu]
[這是另一個百度首頁][baidu]
效果如下:
圖片
Markdown 中也支持插入圖片, 語法如下:
![alt](image_link)
注意比鏈接多了個 !, alt 指的是圖片的介紹, 后面()里是圖片的地址 例如:
![百度logo](https://www.baidu.com/img/bd_logo1.png?where=super)
效果為:
PS: 圖片地址可以是網(wǎng)址, 也可以是文件的相對路徑. 如:
./img/xxx.jpg
這表示 當前目錄下的 img 目錄中的 xxx.jpg.
Markdown 文檔中的圖片, 可以使用圖片在本地的相對路徑, 也可以把圖片放在七牛云/微博上, 生成外鏈地址使用. 有些網(wǎng)站的 Markdown 編輯器(比如簡書等), 有可能需要把圖片上傳到這些網(wǎng)站上才能使用.
圖片參考鏈接
圖片也可以使用參考鏈接的語法, 在參考鏈接的語法前面加 ! 即可, 如下:
![圖片名稱][圖片?id]
[圖片id]: url/to/image
使用方法和參考鏈接一樣, 這里不再多說.
代碼
Markdown 中可以插入代碼.
行內(nèi)代碼 Inline code:
在文本中, 兩個 ` 號(數(shù)字1左邊的鍵) 中間的內(nèi)容會被解析成代碼.
例如: int i = 0;
Multi-line code:
一對 ``` 之間的內(nèi)容會被解析成多行代碼. 連續(xù)三個` 作為起始, 后面的內(nèi)容會被解析成代碼, 再以三個 ` 結(jié)尾. 這里無法演示具體寫法, 直接看效果:
int i = 0;
boolean b = true;
for (; i < 10; i++) {
// 注釋
}
另外, 直接使用 tab 進行縮進, 后面的文字就會被解析成代碼
int i = 0;
boolean b = true;
第一種方法可以設(shè)置代碼語言類型, 直接在第一個``` 后面加語言名稱即可, 如 java, javascript, html 等等. 但是如果只有 一兩行代碼, 使用第二種方式也挺方便.
表格 Table
表格的語法比較簡單, 按照下面這種寫法就可以被解析成表格:
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
顯示效果如下:
First Header | Second Header |
---|---|
Content from cell 1 | Content from cell 2 |
Content in the first column | Content in the second column |
注意: 表格的語法對格式的要求很松散, 只需要用 | 把單元格隔開就行, 但是一定別忘了分隔表頭和表格內(nèi)容的那一行 -|-, 沒有這一行的話無法解析成表格.
分割線
要插入一道分割線, 可以使用三個以上的星號, 減號, 或者下劃線, 例如:
***
* * *
*****
---
- - -
---------------------------------------
上面任何一種方式都可以產(chǎn)生一道分割線, 這里不再演示效果了.
總結(jié)
上面就是常用的 Markdown 語法了, 前面也說了, 掌握這些語法, 就可以滿足絕大多數(shù)的排版需求了. 有些 Markdown 編輯器支持很多擴展語法, 甚至有畫流程圖的語法, 對此我的態(tài)度是不建議使用. Markdown 的目的是為了讓我們專心寫作, 使用簡單明了的排版即可, 復(fù)雜排版/流程圖這種事情, 還是交給 Word 和專業(yè)的繪圖軟件去做吧.
我也會寫一篇文章來介紹 Markdown 的原理, 以及一些實用的擴展語法, 有興趣的同學(xué)可以看看, 多了解一些東西也不錯.