Markdown 樣式排版完整指南
說到 Markdown 排版,很多人第一反應就是「不就粗體斜體那幾樣嘛」。但真到寫文件的時候,經常會冒出一些問題:刪除線在哪個平台能用?粗體和斜體能不能疊加?為什麼我的 ==高亮== 在 GitHub 上變成了普通文字?
這篇文章就專門聊 Markdown 的文字樣式(text styling)——把所有跟「文字長什麼樣」有關的語法整理清楚,順便說說不同平台的相容性差異和排版上的實用技巧。
Markdown 樣式速查表
先上一張總表,方便隨時查閱。表裡的每一項後面都會展開說明。
| 樣式 | 語法 | 範例效果 |
|---|---|---|
| 粗體 | **文字** 或 __文字__ | 文字 |
| 斜體 | *文字* 或 _文字_ | 文字 |
| 粗體+斜體 | ***文字*** | 文字 |
| 刪除線 | ~~文字~~ | |
| 行內程式碼 | `程式碼` | 程式碼 | |
| 高亮 | ==文字== | ==文字==(需平台支援) |
| 底線 | <u>文字</u> | 文字(HTML) |
| 上標 | x<sup>2</sup> | x2(HTML) |
| 下標 | H<sub>2</sub>O | H2O(HTML) |
| 文字顏色 | <span style="color:red">文字</span> | 需平台支援行內樣式 |
| 鍵盤按鍵 | <kbd>Ctrl</kbd> | Ctrl(HTML) |
這個表基本涵蓋了 Markdown 中所有跟文字樣式相關的寫法。注意看就能發現,有些是 Markdown 原生語法(粗體、斜體、刪除線),有些是靠內嵌 HTML 實現的(底線、上標、下標)。這個區別很重要,後面會詳細說。
粗體和斜體:最基礎的文字樣式
粗體和斜體是 Markdown 裡用得最多的兩種樣式,語法也很簡單:
**這是粗體文字**
*這是斜體文字*
***這是粗體加斜體***Markdown 提供了兩套符號來做這件事——星號(*)和底線(_)都能用:
**粗體** 或 __粗體__
*斜體* 或 _斜體_實際使用中,大多數人的習慣是用星號。原因是底線在某些場景下會和單字內部的底線衝突(比如 some_variable_name),解析器可能把它當成斜體標記 [^1]。
粗體和斜體可以疊加。***文字*** 就是粗體加斜體,等效於 **_文字_** 或 ___文字___。
順便說一個我在 GitHub 上踩過的坑:在列表項裡巢狀使用粗體和斜體時,如果符號和文字之間有空格,有些渲染器的解析結果不一樣。比如 ** 粗體 ** 在 CommonMark 規範下不會變粗(因為星號和文字之間有空格),但在某些編輯器的即時預覽裡卻顯示正常。所以我的建議是,符號緊貼文字寫,別加空格 [^1]。
刪除線:標記已刪除或過時內容
刪除線在 Markdown 刪除線 語法中使用雙波浪號:
~~這段文字被劃掉了~~渲染效果就是文字中間多了一條橫線:這段文字被劃掉了。
這個語法屬於 GitHub Flavored Markdown(GFM)擴展,不是 CommonMark 標準的一部分。不過現在幾乎所有主流平台都支援——GitHub、GitLab、Obsidian、Typora、VS Code、Discord 都可以。如果你在某個小眾平台上不生效,那就是它不支援 GFM 擴展 [^2]。
刪除線經常和粗體搭配用,比如在更新日誌裡標記舊的價格:
~~**原價 ¥199**~~ 限時 **¥99**高亮:給文字加背景色
高亮(highlight)的寫法是用雙等號把文字包起來:
==這是一段需要強調的文字==這個語法在 Obsidian、Typora(需在設定中開啟)、Logseq、iA Writer 等筆記工具裡都支援,效果是文字出現黃色背景。
但要注意,==高亮== 不屬於任何 Markdown 標準。CommonMark 不認,GFM 也不認 [^3]。如果你在 GitHub 或 GitLab 上寫 ==高亮==,它會原樣顯示為普通文字。
在這些不支援的平台上,可以用 HTML 的 <mark> 標籤替代:
<mark>這是一段需要強調的文字</mark>不過 GitHub 會過濾大部分 HTML 標籤,所以 <mark> 在 GitHub 上也不行。說實話,如果你需要 GitHub 上的高亮效果,最靠譜的替代方案是用粗體或者 行內程式碼 來強調。
更多關於高亮的詳細說明,可以看 Markdown 高亮 這篇文章。
行內程式碼:標記程式碼或特殊術語
用單個反引號把文字包起來就是行內程式碼:
在 JavaScript 中,使用 `console.log()` 輸出內容。行內程式碼的渲染效果是灰色背景的等寬字型。嚴格來說它不是「樣式」,而是語意標記——表示這段文字是程式碼。但視覺上它確實起到了強調的效果,很多人也拿它來標記檔案名稱、命令、快捷鍵等特殊術語。
有一點需要注意:行內程式碼裡的 Markdown 語法不會被解析。所以 `*這段不會變斜體*` 渲染出來就是帶星號的等寬文字,不會變成斜體。
如果程式碼內容本身包含反引號,可以用雙反引號包裹:
`` 程式碼中包含 ` 反引號 ``樣式疊加:多個格式怎麼組合
Markdown 允許多種樣式疊加使用。常見的組合:
**_粗體斜體_**
~~**刪除線粗體**~~
**`粗體程式碼`**
~~*刪除線斜體*~~不過疊加有規則限制,不是所有組合都能生效:
- 可以疊加的組合:粗體+斜體、刪除線+粗體、刪除線+斜體、粗體+行內程式碼
- 不能疊加的組合:行內程式碼裡不能巢狀任何樣式(因為行內程式碼不解析 Markdown)
- 高亮+其他樣式:取決於平台,Obsidian 支援
==**高亮粗體**==,但很多平台不支援
說實話,實際使用中我很少用到三層以上的疊加。兩層就夠了,三層以上反而影響可讀性。
用 HTML 補充 Markdown 的樣式短板
Markdown 的原生樣式能力有限——沒有底線、沒有上標下標、沒有文字顏色。這些都要靠內嵌 HTML 來實現 [^4]。
底線
<u>這段文字帶底線</u>Markdown 原生沒有底線語法(John Gruber 的設計理念是底線容易和連結混淆),但 HTML 的 <u> 標籤基本所有 Markdown 渲染器都支援。更多內容可以看 Markdown 底線。
上標和下標
公式裡常見:x<sup>2</sup> + y<sup>2</sup> = z<sup>2</sup>
化學方程式:H<sub>2</sub>O這在寫技術文件的時候特別有用,數學公式和化學式都離不開上標下標。
鍵盤按鍵樣式
按 <kbd>Ctrl</kbd> + <kbd>S</kbd> 儲存檔案<kbd> 標籤會把文字顯示為鍵盤按鍵的樣式,帶邊框的等寬字型。寫教學和操作指南的時候經常用到。
文字顏色
Markdown 原生不支援文字顏色。唯一的辦法是用 HTML:
<span style="color: red">紅色文字</span>
<span style="color: #0066cc">藍色文字</span>但這個方法的限制很大——GitHub 會過濾掉 style 屬性,所以完全無效。Obsidian 和 Typora 支援行內樣式,可以正常顯示。如果你需要改變文字顏色,建議看 Markdown 文字顏色 那篇,裡面有更詳細的方案對比。
平台相容性對比:你的樣式能不能用
這可能是寫 Markdown 樣式時最讓人頭痛的問題。同一份文件在不同平台上渲染出來的效果可能差別很大。我整理了一張相容性對照表:
| 樣式語法 | GitHub | Obsidian | Typora | Jupyter | VS Code |
|---|---|---|---|---|---|
**粗體** | ✅ | ✅ | ✅ | ✅ | ✅ |
*斜體* | ✅ | ✅ | ✅ | ✅ | ✅ |
~~刪除線~~ | ✅ | ✅ | ✅ | ✅ | ✅ |
`程式碼` | ✅ | ✅ | ✅ | ✅ | ✅ |
==高亮== | ❌ | ✅ | ✅ | ❌ | ✅ |
<mark> | ❌ | ✅ | ✅ | ✅ | ✅ |
<u> | ❌ | ✅ | ✅ | ✅ | ✅ |
<mark style> | ❌ | ✅ | ✅ | ❌ | ✅ |
<span style> | ❌ | ✅ | ✅ | ✅ | ✅ |
關鍵發現:
GitHub 是最嚴格的。它不支援高亮語法(== 和 <mark> 都不行),也過濾幾乎所有 HTML 標籤的樣式屬性。如果你的檔案主要發在 GitHub,能用的文字樣式就只有粗體、斜體、刪除線和行內程式碼 [^2]。
Obsidian 和 Typora 是最寬鬆的。幾乎所有樣式語法都支援,包括高亮、HTML 行內樣式和自訂顏色。如果你用的是這兩個工具,樣式自由度最高。
Jupyter Notebook 居中。基礎樣式全支援,<mark> 也可以,但 <mark style> 自訂顏色不行 [^3]。
有一次我把 Obsidian 裡寫好的筆記直接貼上到 GitHub Issue 裡,結果高亮沒了、顏色沒了、底線也沒了,只剩粗體和斜體。後來才知道 GitHub 的 Markdown 渲染器會嚴格過濾 HTML。從那以後我養成一個習慣:如果檔案最終要發到 GitHub,寫的時候就只用基礎樣式。
Markdown 樣式排版實用技巧
掌握了語法之後,怎麼讓檔案排版更好看?這裡分享幾個我在實際寫作中總結出來的經驗。
控制樣式的使用頻率
一篇檔案裡,粗體、斜體、刪除線這些樣式不是用得越多越好。過度使用反而會讓讀者抓不住重點。我的建議是:
- 粗體:用來標註關鍵操作、重要概念、首次出現的術語
- 斜體:用來強調語氣、標註英文術語、引用書名或文章名
- 行內程式碼:用來標記程式碼、命令、檔案名稱、設定項
- 刪除線:只在標註變更、標記過時資訊時使用
用標題和列表代替過多的行內樣式
很多人喜歡把每段的關鍵字都變粗,但更好的做法是用清晰的標題層級和結構化的列表來組織內容。標題本身就是最強的「樣式」——它不僅改變了文字的視覺大小,還在檔案結構上建立了清晰的層次。
關於標題的詳細用法,可以參考 Markdown 標題。
注意中文排版的特殊需求
中文 Markdown 排版有幾個特殊點:
- 段落縮排:中文習慣段首縮排兩個字元,但 Markdown 的段落不縮排。如果你需要縮排,可以用
  或全形空格實現,但大部分 Markdown 檔案直接頂格寫段落也是可以接受的 - 中英文之間加空格:在中文和英文/數字之間加一個空格,排版會更好看。比如「使用 Markdown 語法」比「使用Markdown語法」更易讀
- 中文標點:確保使用中文全形標點(,。!?),不要混用英文半形標點
跳脫:當特殊字元不想當語法用
如果你需要顯示星號、底線這些 Markdown 的特殊字元本身,在前面加反斜線就行:
\*這不是斜體\*
\# 這不是標題
\~~ 這不是刪除線 \~~這叫跳脫(escape),更多細節可以看 Markdown 跳脫。
常見問題
Markdown 原生支援哪些文字樣式?
CommonMark 標準只定義了三種行內樣式:粗體(**)、斜體(*)和行內程式碼(`)。刪除線、高亮、底線、文字顏色等都不在標準內 [^1] [^3]。
為什麼我的樣式在 GitHub 上不生效?
GitHub 使用的是自己的 Markdown 渲染器,它會過濾掉大部分 HTML 標籤和所有行內樣式。如果你用了 ==高亮==、<mark>、<span style="color:red"> 這些寫法,在 GitHub 上都不會生效。在 GitHub 上可靠的樣式只有粗體、斜體、刪除線和行內程式碼 [^2]。
粗體和斜體的符號可以混用嗎?
可以。**_文字_** 和 ***文字*** 效果一樣。但要注意底線(_)在單字內部可能會被當成斜體標記,比如 some_variable_name 裡的底線在某些解析器中會觸發斜體。用星號更安全 [^1]。
Markdown 能改字型和字號嗎?
純 Markdown 語法不支援。Typora 可以透過主題 CSS 修改,Obsidian 透過 CSS 片段修改,GitHub 完全不支援。如果你需要調整字體大小,可以看 Markdown 字體大小。
樣式疊加有什麼限制?
行內程式碼內不能巢狀任何 Markdown 樣式。粗體和斜體可以互相疊加,刪除線可以和粗體或斜體疊加。高亮和其他樣式的疊加取決於平台——Obsidian 支援得最好,其他平台不一定行。
參考來源
[^1]: CommonMark Spec — Markdown 官方規範,定義了粗體、斜體等核心語法的解析規則 [^2]: GitHub Docs — GitHub Flavored Markdown 規範,GitHub 官方格式化文件 [^3]: Daring Fireball — Markdown Syntax Documentation,John Gruber 的原始 Markdown 規範 [^4]: Markdown Guide — Basic Syntax,權威的 Markdown 基礎語法參考 [^5]: Stack Overflow — How to apply color on text in Markdown,社群討論 Markdown 文字顏色的解決方案