Markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文本格式編寫文檔,然後轉換成格式豐富的HTML頁面。 —— [ 維基百科 ]
由於排版簡單、格式轉換方便等優點,Markdown 變得越來越流行。支持 Markdown 的編輯器也越來越多,這些編輯器大多擴展了 Markdown 的功能,如表格、腳註、內嵌 HTML 等,導致其功能不完全一致。但是,Markdown 本身的語法種類很少,只對應 HTML 標記的一小部分,這些基本語法是通用的。接下來本文就介紹一下這些基本語法。
段落和換行
一個 Markdown 段落是由一個或多個連續的文本行組成,它的前後要有一個及以上的空行。
段落1
段落2 // 段落2和段落1之間有一個空行
段落3 // 段落3和段落2之間有一個空行
相對應的 HTML 爲
<p>段落1</p><p>段落2</p><p>段落3</p>
“由一個或多個連續的文本行組成”這句話其實暗示了 Markdown 允許段落內的強迫換行。但是,在文本中輸入的換行會從最終生成的結果中刪除,瀏覽器會根據可用空間自動換行。如果想強迫換行,需要在行尾插入至少兩個空格,然後換行。
段落4第一行
段落4第二行 // 第一行行尾有兩個空格
相對應的 HTML 爲
<p>段落4第一行<br>段落4第二行</p>
分隔線
可以在一行中用三個及以上的 *
、-
、_
來建立一個分隔線,對應 HTML 中的 <hr>
。
***
---
___
標題
可以在標題內容前輸入特定數量的 #
來實現對應級別的 HTML 樣式的標題。
# 一級標題 // => <h1>一級標題</h1>
## 二級標題 // => <h2>二級標題</h2>
### 三級標題 // => <h3>三級標題</h3>
#### 四級標題 // => <h4>四級標題</h4>
##### 五級標題 // => <h5>五級標題</h5>
###### 六級標題 // => <h6>六級標題</h6>
一級和二級標題還有一種寫法。
一級標題
======= // 文本的下面一行爲任意數量個“=”
二級標題
------- // 文本的下面一行爲任意數量個“-”
列表
Markdown 支持有序列表和無序列表。無序列表使用 *
、+
或是 -
作爲列表標記。有序列表使用任意一個數字接一個英文句點作爲列表標記。注意使用時列表標記後要加至少一個空格或製表符。
* 無序列表項1
* 無序列表項2
* 無序列表項3 // 一個無序列表只能使用一種列表標記,不然就會輸出多個無序列表
1. 有序列表項1
2. 有序列表項2
3. 有序列表項3 // 列表標記上使用的數字不會影響輸出結果,不信你全部改成0試試
相對應的 HTML 爲
<ul><li>無序列表項1</li><li>無序列表項2</li><li>無序列表項3</li></ul>
<ol><li>有序列表項1</li><li>有序列表項2</li><li>有序列表項3</li></ol>
如果列表項之間有一個及以上的空行,Markdown 會將列表項用 <p>
標籤包起來。
* 列表項1
* 列表項2
* 列表項3 // 列表項3和列表項2之間有一個空行
相對應的 HTML 爲
<ul><li>列表項1</li><li><p>列表項2</p></li><li><p>列表項3</p></li></ul>
區塊引用
Markdown 標記區塊引用只需要在被引用的內容段落開頭加上 >
即可。你可以選擇只在段落開頭加一個,也可以在每行前面都加一個,效果是一樣的。
> 引用段落第一行
引用段落第二行
或者
> 引用段落第一行
> 引用段落第二行
相對應的 HTML 爲
<blockquote><p>引用段落第一行<br>引用段落第二行</p></blockquote>
區塊引用可以嵌套。根據層次加上不同數量的 >
或者使用其他的 Markdown 語法,例如:
> > 第二層引用
> # 一級標題
> - 列表項1
> - 列表項2
鏈接和圖片
正常鏈接有兩種書寫方式,分別叫做行內鏈接和參考鏈接,當然效果是一樣的。
[鏈接文本](鏈接地址 "提示信息")
或者
[鏈接文本][標記]
[標記]: 鏈接地址 "提示信息" // 這一行可以寫在文檔的任意地方
相對應的HTML爲
<a href="鏈接地址" title="提示信息">鏈接文本</a>
另外,用尖括號包起來的內容會被 Markdown 視爲自動鏈接。
<https://www.csdn.net/> // => <a href="https://www.csdn.net/">https://www.csdn.net/</a>
圖片的插入方法類似於正常鏈接,在 !
後面接一個方括號,裏面放上圖片的替代文字,然後接一個括號,裏面是圖片地址和提示信息。同樣它也允許用參考式書寫。
![替代文本](圖片地址 "提示信息")
或者
![替代文本][標記]
[標記]: 圖片地址 "提示信息" // 這一行可以寫在文檔的任意地方
相對應的 HTML 爲
<img src="圖片地址" alt="替代文本" title="提示信息">
代碼
要在 Markdown 中建立代碼區塊很簡單,只要簡單地縮進 1 個製表符就可以。一個代碼區塊會一直持續到沒有縮進的那一行。
function sayHello () {
return 'Hello'
}
相對應的 HTML 爲
<pre>
<code>function sayHello () {
return 'Hello'
}</code>
</pre>
如果要標記一小段行內代碼,你可以用 `
把它包起來
`printf()` // => <code>printf()</code>
如果要在代碼區段內插入`
,你可以用多個`
來開啓和結束代碼區段
``(`)`` // => <code>(`)</code>
`` ` `` // => <code>`</code>
`` `printf()` `` // => <code>`printf()`</code>
強調文本
Markdown 使用 *
和 _
作爲標記強調文本的符號,被 *
或 _
包圍的本文會被轉成用 <em>
標籤包圍,用兩個 *
或 _
包起來的話,則會被轉成 <strong>
。
*強調文本* // => <em>強調文本</em>
_強調文本_ // => <em>強調文本</em>
**強調文本** // => <strong>強調文本</strong>
__強調文本__ // => <strong>強調文本</strong>
轉義字符
如果你想在 Markdown 中插入一些在語法中有其它意義的字符,就需要對這些字符轉義。例如:
# 這不是標題
\# 這不是標題
- 這不是列表
\- 這不是列表