Markdown 最全語法

Markdown 是一種純文本格式的標記語言,通過簡單的標記語法,它可以使普通文本內容具有一定的格式。一份 Markdown 文檔可以很方便的導出為 HTML 、Word、圖像、PDF、Epub 等多種格式的文檔,非常便于文章的發(fā)布。
Markdown 具有一系列衍生版本,不同版本之間基本兼容,但在一些語法和渲染效果上略有差別,另外不同的編輯器顯示效果也會有區(qū)別。
本篇文章盡量全的介紹 Markdown 的各個語法,但有些編輯器可能不支持其中某些語法。本文內容是根據(jù) Markdown 的語法文檔和一些其它資料整理得到,內容也會不斷的更新。

標題

Markdown標題有幾種寫法 ("atx", "atx_closed", "setext") :
第一種 ("atx") 是在想要設置為標題的文字前面加 #,這種寫法支持六級標題,注意要在 # 和文字之間加至少一個空格:

# 一級標題
## 二級標題
### 三級標題
#### 四級標題
##### 五級標題
###### 六級標題

第二種 ("setext") 是在想要設置為標題的文字下面用多個 = 和 - 分隔,這種寫法只能寫到二級標題,= 和 - 的個數(shù)沒有限制,只要大于一個就可以:

一級標題
==========
二級標題
----------

第三種 ("atx_closed") 是在想要設置為標題的文字前后都加 #,這種寫法也支持六級標題,注意要在文字和前后的 # 之間加至少一個空格:

# 一級標題 #
## 二級標題 ##
### 三級標題 ###
#### 四級標題 ####
##### 五級標題 #####
###### 六級標題 #######

標題的三種寫法可以混用,但為了保持統(tǒng)一性,不建議混用,但用第二種寫法寫到二級標題后,還可以使用第一種或第三種寫法繼續(xù)寫后面的標題。

段落和換行

Markdown 中用一個或多個空行劃分不同的段落(空行的含義就只要是看起來是空行就行了,即使包含了空格或者水平制表符等空白符也是空行),普通段落不應該使用縮進。
關于換行,Markdown 并不會將段落的每個換行都轉換為 <br /> 標簽,如果確實需要在行尾輸入 <br /> 標簽,只需要在行尾加兩個及以上的空格,然后換行。

強調

傾斜

傾斜是在文字左右用一個 *(星號)或 _(下劃線)包起來,文字與星號或下劃線之間沒有空格:

*傾斜*  _傾斜_

會得到:

傾斜 傾斜

加粗

加粗是在文字左右用兩個 *(星號)或 _(下劃線)包起來,文字與星號或下劃線之間沒有空格:

**加粗**  __加粗__

會得到:

加粗 加粗

加粗傾斜

加粗傾斜是在文字左右用三個 *(星號)或 _(下劃線)包起來,文字與星號或下劃線之間沒有空格:

***加粗傾斜***   ___加粗傾斜___

會得到:

加粗傾斜 加粗傾斜

刪除線

刪除線是在文字左右用兩個 ~~ 包起來,文字與 ~~ 之間沒有空格:

~~刪除線~~

會得到:

刪除線

腳注

腳注是對文本的補充說明,格式如下:

面朝大海,春暖花開[^腳注]

[^腳注]: 海子

會得到:

面朝大海,春暖花開[1]

注意:

  1. 這里有些編輯器會自動給腳注進行編號,整篇文檔從 1 開始編號,但有的編輯器會直接顯示腳注的名字;
  2. 腳注的定義與腳注的內容至少隔一行,也可以將整篇文檔的腳注統(tǒng)一寫在文檔結尾處,編輯器會自動把腳注的內容放到文檔的最后。

引用

用法是在文字前面加一個 >,注意 > 是英文格式下的右尖括號,括號和文字之間至少有一個空格:

> 面朝大海,春暖花開。

會得到:

面朝大海,春暖花開。

引用是一個區(qū)塊,可以放很多東西,如標題、列表、代碼塊等等:

> ## 二級標題
> * 無序列表

會得到:

二級標題

  • 無序列表

引用可以多層嵌套,多層嵌套時,多個 > 是不需要連在一起的,只需要在同一行就可以:

> 引用一
>> 引用二
>>> 引用三

會得到:

引用一

引用二

引用三

列表

列表分為 有序列表 和 無序列表。

無序列表

無序列表可以用 *、+、- 創(chuàng)建,三個符號可以混用,但建議上下文統(tǒng)一,符號和文字之間加至少一個空格或水平制表符:

* 無
- 序
+ 列
* 表

會得到:

有序列表

有序列表用數(shù)字和點來創(chuàng)建,需要注意的是數(shù)字后面只能是英文的點,且點和文字之間至少加一個空格,另外有序列表的序號是根據(jù)第一行的數(shù)字確定的,后面的數(shù)字序號對于最終生成 HTML 是沒有影響的. 比如下面的列表創(chuàng)建時序號是亂的,但創(chuàng)建后序號會顯示為 2. 3. 4. 5. (這一點很多編輯器會自動更正或填充),點和文字之間加至少一個空格或水平制表符:

2. 有
2. 序
3. 列
3. 表

會得到:

列表嵌套

列表可以嵌套使用,只需要在上一級和下一級之間打兩個空格即可(或者一個水平制表符)(有的語法需要三個空格或四個空格),有序列表和無序列表可以互相嵌套:

* 1
  * a
  * b
* 2
  1. a
  2. B

會得到:

  • 1
    • a
    • b
  • 2
    1. a
    2. B

如果列表項中包含引用,引用標記 > 需要縮進,如果列表項中有代碼塊,代碼塊需要雙倍縮進,例如:

* 孔子說過:  
  > 毋意,毋必,毋固,毋我。

會得到:

  • 孔子說過:

    毋意,毋必,毋固,毋我。

另外,如果一個列表項里包含多個段落,那么每個段落都需要縮進,縮進量與第一段一致(用空格或制表符):

* 段落一

  段落二

會得到:

  • 段落一

    段落二

任務列表

任務列表通過無序列表和中括號 [] 來定義,中括號中間加 x 表示完成:

* [ ] 任務1
* [ ] 任務2
* [x] 任務3已完成

會得到:

  • 任務1
  • 任務2
  • 任務3已完成

代碼塊

單行代碼用一個 `(反引號)包起來,或者行前加四個空格或一個水平制表符:

`a=1`

用反引號可以在行內顯示代碼,如:

如果`a=1`,`b=2`,那么`a+b=3`

會得到:

如果a=1,b=2,那么a+b=3

多行代碼用三個 `(反引號)包起來,反引號單獨一行,或者在每行代碼前加四個空格或一個水平制表符:

```
a=1
b=2
```

會得到:

a=1
b=2

反引號后面可以寫注釋,這樣可以給代碼塊添加相應語言的代碼高亮,例如:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

會得到:

require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

水平線

水平線可以由 *、 - 、_(星號,減號,下劃線)這三個符號的至少三個表示,注意至少要三個,且不需要連續(xù),中間有空格也可以,但生成水平線的符號必須獨占一行:

***
-    -   -
_ _ _

會得到:




鏈接

Markdown 支持兩種鏈接形式: 內聯(lián) 和 引用 。
內聯(lián):

[鏈接名](鏈接地址 “鏈接title” )

鏈接title 是可選的內容,是當指針停留在鏈接處時顯示的內容;
引用:

[鏈接名][鏈接id]
[鏈接id]: 鏈接地址 “鏈接title”
[鏈接id]: 鏈接地址 '鏈接title'
[鏈接id]: 鏈接地址 (鏈接title)

鏈接id 有三種定義方式(如上),定義時冒號后面加一個以上的空格或水平制表符;
鏈接id 可以包含字母, 數(shù)字, 空格, 和標點符號,字母不是大小寫敏感的,鏈接id 的定義可以在文章的任意位置,一般直接放在引用位置的下面;
鏈接名也可以包含字母, 數(shù)字, 空格, 和標點符號,鏈接名 和 鏈接id 的中括號間可以有空格;

引用的鏈接形式中可以隱含鏈接名稱,可以忽略 鏈接id,這時 鏈接名 本身被用于 鏈接id。引用 鏈接id 時只用一對空的中括號就可以了,
例如, 要鏈接 "Google" 這個詞到 google.com 網(wǎng)站, 只用這樣寫:

[Google][]

同時這樣定義 鏈接id:

[Google]: http://google.com/

另外,也可以將網(wǎng)址直接用 <>(尖括號)包起來,也可以顯示為鏈接,甚至直接寫出網(wǎng)址也顯示為鏈接:

<http://www.baidu.com>

圖片

圖片跟鏈接格式類似,也有 內聯(lián) 和 引用 兩種形式,只不過在圖片名前要加 !(英文嘆號)。
內聯(lián):

![圖片名](圖片地址 "圖片title")

引用:

![圖片名][圖片id]

[圖片id]:圖片地址 “圖片title”

圖片名 是指顯示在圖片下方的描述文字,可選;圖片title 是當指針停留在圖片上時顯示的內容,可選。
Markdown 沒有語法指定圖片尺寸,如果需要指定圖片尺寸, 可以使用 HTML <img> 標簽。

反斜杠轉義

Markdown 中可以使用反斜杠轉義 Markdown 語法符號為字面量。Markdown 為以下字符提供反斜杠轉義:

\\   backslash(反斜杠)
\`   backtick(反引號)
\*   asterisk(星號)
\_   underscore(下劃線)
\{\}  curly braces(花括號)
\[\]  square brackets(方括號)
\(\)  parentheses(圓括號)
\#   hash mark(井號)
\+   plus sign(加號)
\-   minus sign (hyphen)(減號)
\.   dot(點)
\!   exclamation mark(驚嘆號)

以上這些符號在前面加反斜杠后就會顯示本身的字面形式,而不會作為 Markdown 的語法符號。

表格

| 表頭 | 表頭  | 表頭 |
| :---- | :---: | ---: |
| 靠左 | 居中 | 靠右 |
| 內容 | 內容  | 內容 |

會得到:

表頭 表頭 表頭
靠左 居中 靠右
內容 內容 內容

第二行分割表頭和內容,-(減號) 有一個就行,也可以多加幾個使其對齊,文字默認居左,- 兩邊加 :(冒號)表示文字居中,- 右邊加 : 表示文字居右,原生語法兩邊的 | 必須加,但目前大多數(shù)語法兩邊的 | 不加也可以,不同的解釋器顯示的表格會有所區(qū)別。

應用 HTML 標簽

可以直接在 Markdown 文檔里應用 HTML 標簽,以達到更好的表現(xiàn)效果,但不同的編輯器可能支持的標簽會有區(qū)別。

上、下標

上、下標可以通過 HTML 的 <sup><sub> 標簽實現(xiàn):

這是<sup>上標</sup>文本
這是<sub>下標</sub>文本

會得到:

這是上標文本
這是下標文本

傾斜、加粗、下劃線

傾斜、加粗、下劃線可以通過 HTML 的 <i>、<b><u> 標簽實現(xiàn):

<i>傾斜</i>
<b>加粗</b>
<i><b>傾斜加粗</b></i>
<u>下劃線</u>

高亮標記

高亮標記可以通過 HTML 的 <mark> 標簽實現(xiàn):

<mark>高亮標記</mark>

鍵盤文本

鍵盤文本可以通過 HTML 的 <kbd> 標簽實現(xiàn):

<kbd>鍵盤文本</kbd>

按鈕

按鈕可以通過 HTML 的 <button> 標簽實現(xiàn):

<button type="button">按鈕</button>

注意需要指明 type 屬性。

一些規(guī)范

  • MarkDown 文件均使用 .md 作為后綴
  • 標題與緊貼的上下正文使用空行隔開,# 號和文字之間一個空格連接
  • 整篇文章標題格式要統(tǒng)一
  • 普通文本換行,使用行末尾兩個空格觸發(fā)
  • 定義列表時上下文使用一致的符號,縮進也要統(tǒng)一
  • 列表塊前后整行隔開
  • 代碼塊前后整行隔開

本文介紹的 Markdown 語法不同的衍生版本或不同的解釋器會有所區(qū)別,有些會不支持,有些可能需要一些擴展工具才能實現(xiàn)。

參考

參考1


  1. 海子 ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容