Markdown 引用語法:從基礎到進階的完整指南

Markdown 引用語法指南

在寫文件時,我們經常需要引用別人的話、標註重要提示,或者讓某段文字看起來更醒目。Markdown 提供了一個簡單的方式來做到這一點 —— 引用(blockquote)。

不管你是寫技術文件、記筆記,還是在 GitHub 上寫 README,引用都是用得很多的語法。

Markdown 引用基礎語法

建立引用非常簡單:在行首加上 > 符號(大於號),再加一個空格,後面寫上引用的內容就行了。

> 這是一段引用文字。

渲染效果:

這是一段引用文字。

這個 > 符號對應 HTML 中的 <blockquote> 標籤。也就是說,上面的 Markdown 程式碼實際上會產生這樣的 HTML:

<blockquote>
<p>這是一段引用文字。</p>
</blockquote>

理解了這一點,後面遇到各種引用行為就更容易理解了。

多段落引用

如果你的引用內容比較長,需要分成多個段落,方法是在每個空行上也加上 >

> 這是引用的第一段。

>
> 這是引用的第二段,空行上也要加 > 符號。

渲染效果:

這是引用的第一段。

這是引用的第二段,空行上也要加 > 符號。

這裡有一個關鍵點:空行上也必須加 >,否則引用會被打斷,變成兩個獨立的引用區塊。這一點在很多教學中沒有強調,但實際使用中很容易出錯。

有一次我寫了一段很長的引用,中間空了一行忘記加 >,結果渲染出來變成了兩個分開的引用框,看起來很不協調。所以只要你想讓所有內容保持在同一個引用區塊裡,每一行(包括空行)都要加 >

巢狀引用(引用中的引用)

Markdown 支援引用巢狀,也就是在引用裡面再放一個引用。方法是增加 > 的數量:兩個 >> 表示二級引用,三個 >>> 表示三級引用,以此類推。

> 這是一級引用
>
> > 這是二級引用(巢狀在一級引用中)
>
> 回到一級引用

渲染效果:

這是一級引用

這是二級引用(巢狀在一級引用中)

回到一級引用

語法說明
>一級引用
>>二級引用(巢狀在一級引用中)
>>>三級引用(巢狀在二級引用中)

巢狀引用在回覆評論、引用對話場景時特別有用。不過實際使用中,一般巢狀到兩三層就夠了,太深的巢狀會影響閱讀體驗。

在引用中使用其他 Markdown 語法

引用區塊不是「只能寫純文字」——你可以在引用裡面使用幾乎所有的 Markdown 格式語法,包括粗體斜體連結、列表和程式碼等。

引用中粗體和斜體

> 這段引用中有**粗體文字**和*斜體文字*。

渲染效果:

這段引用中有粗體文字斜體文字

引用中使用列表

> 引用中的列表:
>
> - 第一項
> - 第二項
> - 第三項

渲染效果:

引用中的列表:

  • 第一項
  • 第二項
  • 第三項

引用中使用程式碼區塊

> 引用中的程式碼範例:
>
> ```javascript
> console.log("Hello, World!");
> ```

引用中使用連結

> 更多 Markdown 語法請參考 [Markdown 連結語法](/zh/markdown/link/)。

引用內巢狀其他語法時,需要注意一點:不是所有 Markdown 渲染器都支援所有巢狀組合。根據 CommonMark 規範,引用內可以包含任何區塊層級元素,但某些平台(特別是自訂解析器)可能會有差異。如果遇到渲染異常,先排查一下是不是平台相容性問題。

引用在列表中的用法

當引用出現在列表項中時,引用需要縮排到與列表內容對齊的位置。

1. 第一項
2. 第二項
   > 在列表項中的引用
   > 需要縮排對齊
3. 第三項

我實測發現,在 GitHub 和 VS Code 中,列表裡的引用需要縮排 3 個空格(與列表文字對齊),才能正確渲染為列表項的一部分。如果縮排不夠,引用可能會脫離列表,變成獨立的引用區塊。說實話這個細節很容易被忽略,但在寫技術文件時經常遇到。

「懶延續」機制

順便提一句,CommonMark 規範中有一個叫做「懶延續」(lazy continuation)的機制,蠻有意思的。

簡單來說,如果一個段落的第一行以 > 開頭,後面的連續行即使不加 >,也會被當作引用的一部分。

> 這一行有 > 符號
這一行沒有 > 符號,但仍然是引用的一部分

在某些渲染器中,這段程式碼會渲染為一個完整的引用區塊。

不過,這個行為不是所有平台都支援。在 GitHub Flavored Markdown (GFM) 中,「懶延續」只在同一段落內有效,跨段落(中間有空行)就必須每行都加 >。我的建議是:養成每行都加 > 的習慣,這樣在所有平台上都能正確渲染,不用擔心相容性。

不同平台的引用語法差異

不同平台對 Markdown 引用的支援有些差異,我整理了一個對照表:

特性標準 MarkdownGitHubDiscordObsidian
> 單行引用
多段落引用
>> 巢狀引用
>>> 多行引用
懶延續部分部分
引用內巢狀程式碼區塊

需要特別說明的是 Discord 的 >>> 語法:在 Discord 中,>>> 後面的所有內容都會變成引用,直到訊息結束。這與標準 Markdown 中的 >>>(三級巢狀引用)含義不同。

根據 Discord 官方文件說明:

  • > 建立單行引用
  • >>> 建立多行引用(後面所有內容都是引用)

這是 Discord 對 Markdown 的擴充,不是標準語法。

引用的實際應用場景

了解了語法之後,來看看引用在實際寫作中怎麼用。

引用名人名言或文獻

> 任何足夠先進的技術,都與魔法無異。
>
> —— 亞瑟·克拉克

文件中的提示框

很多文件系統會把引用樣式用作提示框。雖然這不是標準用法,但在實際寫作中很常見。比如:

> **注意**:在執行此指令之前,請確保已備份資料庫。

回覆和對話

在 GitHub Issues 或郵件列表中,引用常用於回覆別人的話,這也是 blockquote 這個名稱的由來——引用一塊內容來回覆:

> 使用者原話:登入頁面無法正常顯示。

感謝回報,這個問題已在最新版本中修復。

用 HTML 實現引用

如果你覺得每行都加 > 太麻煩,對了,還有一個辦法——直接用 HTML 的 <blockquote> 標籤。大多數 Markdown 渲染器都支援 HTML 標籤。

<blockquote>
  這是第一段引用內容。

  這是第二段引用內容,不需要每行加 > 符號。
</blockquote>

這個方法在引用很長的內容時特別方便。不過要注意,使用 HTML 標籤後,標籤內部不能再使用 Markdown 語法(比如 **粗體** 不會生效),需要直接使用 HTML 標籤來控制格式。

常見問題

Markdown 引用和程式碼區塊有什麼區別?

引用(> 開頭)用來凸顯文字內容,通常會顯示為左側帶豎線的縮排區塊。程式碼區塊(用反引號 ` 包裹)用來顯示程式碼,會保持原始的字元間距和換行。兩者用途不同:引用強調內容的重要性或來源,程式碼區塊展示程式碼。

引用中可以放圖片嗎?

可以。引用中支援 Markdown 圖片語法

> ![圖片描述](image-url.png)

為什麼我的引用沒有渲染出來?

常見原因有幾個:

  1. > 後面沒有加空格(部分渲染器要求有空格)
  2. 引用前後沒有空行(建議在引用區塊前後各留一個空行)
  3. 混用了不同的縮排方式(用空格而不是 Tab 更可靠)

引用巢狀最多可以有幾層?

Markdown 規範沒有限制巢狀層數,但實際上超過三層巢狀的引用可讀性會很差。大多數文件風格建議巢狀不超過兩層。

Markdown 引用(blockquote)怎麼讀?

blockquote 讀作 "block quote",意思是「區塊級引用」。它是 HTML 中的一個標籤名稱,對應 Markdown 中用 > 建立的引用元素。

小結

說實話語法本身沒幾行,但問題都在細節裡。一個 > 就能搞定引用,難的是記住多段落時空行也要加 >、巢狀引用別搞得太深、以及不同平台的那些小差異。我的建議是養成習慣——每行都加 >,這樣不管在哪個平台寫都不會出問題。

對了,如果你在寫技術文件,引用內巢狀 粗體斜體程式碼區塊、列表、連結 這些格式都是日常會用到的組合,可以多試試。


參考來源: