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 引用的支援有些差異,我整理了一個對照表:
| 特性 | 標準 Markdown | GitHub | Discord | Obsidian |
|---|---|---|---|---|
> 單行引用 | ✅ | ✅ | ✅ | ✅ |
| 多段落引用 | ✅ | ✅ | ✅ | ✅ |
>> 巢狀引用 | ✅ | ✅ | ✅ | ✅ |
>>> 多行引用 | ❌ | ❌ | ✅ | ❌ |
| 懶延續 | ✅ | 部分 | ❌ | 部分 |
| 引用內巢狀程式碼區塊 | ✅ | ✅ | ✅ | ✅ |
需要特別說明的是 Discord 的 >>> 語法:在 Discord 中,>>> 後面的所有內容都會變成引用,直到訊息結束。這與標準 Markdown 中的 >>>(三級巢狀引用)含義不同。
根據 Discord 官方文件說明:
>建立單行引用>>>建立多行引用(後面所有內容都是引用)
這是 Discord 對 Markdown 的擴充,不是標準語法。
引用的實際應用場景
了解了語法之後,來看看引用在實際寫作中怎麼用。
引用名人名言或文獻
> 任何足夠先進的技術,都與魔法無異。
>
> —— 亞瑟·克拉克文件中的提示框
很多文件系統會把引用樣式用作提示框。雖然這不是標準用法,但在實際寫作中很常見。比如:
> **注意**:在執行此指令之前,請確保已備份資料庫。回覆和對話
在 GitHub Issues 或郵件列表中,引用常用於回覆別人的話,這也是 blockquote 這個名稱的由來——引用一塊內容來回覆:
> 使用者原話:登入頁面無法正常顯示。
感謝回報,這個問題已在最新版本中修復。用 HTML 實現引用
如果你覺得每行都加 > 太麻煩,對了,還有一個辦法——直接用 HTML 的 <blockquote> 標籤。大多數 Markdown 渲染器都支援 HTML 標籤。
<blockquote>
這是第一段引用內容。
這是第二段引用內容,不需要每行加 > 符號。
</blockquote>這個方法在引用很長的內容時特別方便。不過要注意,使用 HTML 標籤後,標籤內部不能再使用 Markdown 語法(比如 **粗體** 不會生效),需要直接使用 HTML 標籤來控制格式。
常見問題
Markdown 引用和程式碼區塊有什麼區別?
引用(> 開頭)用來凸顯文字內容,通常會顯示為左側帶豎線的縮排區塊。程式碼區塊(用反引號 ` 包裹)用來顯示程式碼,會保持原始的字元間距和換行。兩者用途不同:引用強調內容的重要性或來源,程式碼區塊展示程式碼。
引用中可以放圖片嗎?
可以。引用中支援 Markdown 圖片語法:
> 為什麼我的引用沒有渲染出來?
常見原因有幾個:
>後面沒有加空格(部分渲染器要求有空格)- 引用前後沒有空行(建議在引用區塊前後各留一個空行)
- 混用了不同的縮排方式(用空格而不是 Tab 更可靠)
引用巢狀最多可以有幾層?
Markdown 規範沒有限制巢狀層數,但實際上超過三層巢狀的引用可讀性會很差。大多數文件風格建議巢狀不超過兩層。
Markdown 引用(blockquote)怎麼讀?
blockquote 讀作 "block quote",意思是「區塊級引用」。它是 HTML 中的一個標籤名稱,對應 Markdown 中用 > 建立的引用元素。
小結
說實話語法本身沒幾行,但問題都在細節裡。一個 > 就能搞定引用,難的是記住多段落時空行也要加 >、巢狀引用別搞得太深、以及不同平台的那些小差異。我的建議是養成習慣——每行都加 >,這樣不管在哪個平台寫都不會出問題。
對了,如果你在寫技術文件,引用內巢狀 粗體、斜體、程式碼區塊、列表、連結 這些格式都是日常會用到的組合,可以多試試。
參考來源:
- CommonMark Specification — Markdown 標準規範
- Markdown Guide - Basic Syntax — Markdown 語法參考
- Discord Markdown Text 101 — Discord Markdown 格式指南
- GitHub Flavored Markdown Spec — GitHub Markdown 規範