Markdown 高亮語法
說到 Markdown 裡的「高亮」,其實指的是兩件不同的事——一種是像螢光筆一樣給文字加個醒目的背景色,另一種是程式碼區塊裡根據程式語言自動上色。這兩件事的寫法完全不一樣,很多人搞混了,今天我們就一次講清楚。
文字高亮:像螢光筆一樣標記文字
文字高亮(Text Highlight)就是給段落中的某些字加上背景色,通常是黃色,效果跟在書本上用螢光筆劃重點一模一樣。
用雙等號 ==highlight== 高亮文字
這是最簡潔的寫法,用兩對等號把文字包起來:
這段話裡有一個==非常重要的詞==需要引起注意。渲染效果就是「非常重要的詞」這幾個字會顯示為黃底黑字。
這個語法最早出現在一些擴展 Markdown 方言裡,現在已經被不少主流工具採用:Obsidian、Typora、Logseq、iA Writer、VS Code(預覽模式)都支援用 ==文字== 來實現文字高亮 [^1] [^2]。
順便提一句,我在 Obsidian 裡寫筆記的時候基本天天都用這個語法,劃重點特別方便。不過有一次寫完匯出 HTML 後發現高亮全沒了,查了半天才發現是匯出工具不支援這個語法——後面會詳細說相容性的事。
用 HTML 的 <mark> 標籤高亮
如果 ==高亮== 在你的環境裡不生效,可以用 HTML5 的 <mark> 標籤,幾乎所有 Markdown 渲染器都支援內嵌 HTML:
這段話裡有一個<mark>非常重要的詞</mark>需要引起注意。效果和雙等號一樣,文字會顯示黃色背景。
<mark> 的好處是相容性極強。Stack Overflow 上這個話題的最高票回答推薦的就是這個方案,目前已獲得超過 220 個讚 [^1]。Google Colaboratory、Jupyter Notebook 這些環境裡,<mark> 是唯一可靠的高亮方式。
對了,<mark> 還支援自訂顏色,加上 style 屬性就行:
<mark style="background-color: lightblue">藍色高亮</mark>
<mark style="background-color: #ffcccc">紅色高亮</mark>不過要注意,GitHub 會過濾掉行內 style,所以在 GitHub 上自訂顏色是行不通的 [^3]。
用 <span> 加背景色
這是另一種 HTML 方式,原理和 <mark> 一樣:
<span style="background-color: #FFFF00">黃色高亮文字</span>相比 <mark>,<span> 的語義性差一些(<mark> 在 HTML5 中明確表示「標記/高亮」的含義),而且同樣會被 GitHub 過濾 style 屬性。所以一般推薦用 <mark> 而不是 <span> [^1]。
其他平臺特有的高亮語法
還有些小眾工具用了自己的高亮語法,了解就行,不用記:
| 工具 | 語法 | 說明 |
|---|---|---|
| Roam Research | ^^highlight^^ | 雙脫字符 |
| Notejoy | ::highlight:: | 雙冒號 |
| 某些 Wiki 系統 | ::: highlight\n內容\n::: | 區塊級高亮 |
說實話,除非你剛好在用這些工具,否則不需要關心這些語法。記住 ==highlight== 和 <mark> 就夠了。
平臺相容性對比:哪種高亮方法能用?
這可能是大家最關心的問題。我整理了一張表,列出了主流平臺對文字高亮的支援情況:
| 平臺 | ==高亮== | <mark> | <mark style> | <span style> |
|---|---|---|---|---|
| Obsidian | ✅ | ✅ | ✅ | ✅ |
| Typora | ✅(需設定中開啟)[^4] | ✅ | ✅ | ✅ |
| VS Code 預覽 | ✅ | ✅ | ✅ | ✅ |
| Logseq | ✅ | ✅ | ✅ | ✅ |
| GitHub | ❌ | ❌ | ❌ | ❌ |
| GitLab | ❌ | ❌ | ❌ | ❌ |
| Jupyter Notebook | ❌ | ✅ | ❌ | ✅ |
| Google Colab | ❌ | ✅ | ❌ | ❌ |
幾個關鍵發現:
- GitHub 完全不支援文字高亮。
==不解析,HTML 標籤被過濾。如果你需要在 GitHub README 裡高亮文字,目前只能用 粗體(**粗體**)或行內程式碼(`程式碼`)來替代強調效果 [^3]。 - Obsidian 和 Typora 是體驗最好的,
==語法和<mark>都支援,自訂顏色也沒問題。 - Jupyter/Colab 環境建議直接用
<mark>,最穩妥。
程式碼語法高亮:讓程式碼區塊自動著色
說完了文字高亮,接下來聊聊另一種「高亮」——程式碼語法高亮(Syntax Highlighting)。這個功能是讓程式碼區塊裡的關鍵字、字串、註解等根據程式語言自動上色,提升可讀性。
基本語法
在三個反引號後面加上語言名稱就行:
```javascript
function sayHello() {
console.log("Hello, World!");
}
`` `上面這段程式碼渲染出來,function、console、log 這些關鍵字會被自動標上不同的顏色。
不加語言名稱的話,程式碼區塊就是純灰色背景,沒有語法著色:
``` `
function sayHello() {
console.log("Hello, World!");
}
`` `行內程式碼也算一種「高亮」
用單個反引號包裹的文字會顯示為灰色背景的等寬字體:
在 JavaScript 中,使用 `console.log()` 輸出內容。嚴格來說這不叫高亮,而是標記為「程式碼」,但視覺上確實起到了強調的效果。和 Markdown 粗體、Markdown 斜體 類似,行內程式碼也是一種文字格式化手段。不過要注意,行內程式碼的語義是「程式碼」,不是「重點標記」,別為了好看就把普通文字都用反引號包起來 [^1]。
常用語言識別符
| 語言 | 識別符 | 語言 | 識別符 |
|---|---|---|---|
| JavaScript | javascript 或 js | Python | python 或 py |
| HTML | html | CSS | css |
| Java | java | C/C++ | c / cpp |
| Go | go | Rust | rust |
| PHP | php | Ruby | ruby |
| SQL | sql | Shell | bash 或 shell |
| JSON | json | YAML | yaml |
| TypeScript | typescript 或 ts | Swift | swift |
實際上大多數 Markdown 編輯器支援上百種語言。底層渲染引擎不同,支援的語言列表也有差異——Typora 用的是 CodeMirror,Obsidian 用 Prism.js,GitHub 用 Linguist [^5] [^6]。
程式碼高亮主題
語法高亮的配色方案取決於你用的工具主題。Typora 可以在「主題」選單中切換,VS Code 跟隨編輯器的顏色主題。如果你是在網頁上渲染 Markdown,常用的 highlight.js 和 Prism.js 都提供幾十套主題可以選 [^5]。
這裡有個小經驗:我之前用 highlight.js 做部落格的程式碼高亮,預設主題在淺色背景上看著不錯,但切到深色模式後對比度就很差。後來換成 GitHub Dark 主題才解決。所以選主題的時候別忘了測一下深色模式。
怎麼選?一份簡單的決策指南
根據你的使用場景,我總結了以下建議:
如果你用 Obsidian / Typora 寫筆記:直接用 ==高亮文字==,簡潔又直觀。需要改顏色就加 <mark style="background-color: xxx">。
如果你要發到 GitHub:很遺憾,文字高亮基本沒戲。用 粗體 來強調重點,或者用 > 引用區塊 來突出重要資訊。
如果你寫 Jupyter Notebook:用 <mark>高亮文字</mark>,相容性最好。
如果你做網頁 / 部落格渲染:前端用 highlight.js 或 Prism.js 處理程式碼高亮,文字高亮用 <mark> 標籤,CSS 隨便定製樣式。
程式碼高亮一律用三反引號 + 語言名,這個各平臺都支援。
常見問題
Markdown 標準支援高亮嗎?
原生的 Markdown 規範(包括 CommonMark)不包含文字高亮語法。==highlight== 屬於擴展語法,目前沒有被納入標準 [^1] [^7]。不過 Obsidian、Typora 等主流工具都支援,實際使用沒有問題。
GitHub 上怎麼高亮文字?
GitHub 的 Markdown 渲染器不支援 == 語法,也會過濾 HTML 標籤。替代方案是用 粗體(**文字**)強調,或者用引用區塊(> 文字)來突出顯示 [^3]。
高亮能改顏色嗎?
<mark style="background-color: 顏色"> 在支援行內樣式的平臺(Obsidian、Typora)可以改顏色。GitHub 不支援。==highlight== 語法本身不支援指定顏色,顏色由渲染器主題決定。
程式碼區塊高亮支援哪些語言?
主流引擎(highlight.js、Prism.js、Pygments)都支援 100+ 種程式語言。具體到某個平臺,GitHub 支援 500+ 種語言(基於 Linguist),Obsidian 支援 Prism.js 的全部語言列表 [^5] [^6]。
參考來源
[^1]: Stack Overflow — text highlight in markdown,最高票回答 229 讚 [^2]: Obsidian Help — Basic formatting syntax,官方文件 [^3]: GitHub Community — Can you highlight text in Markdown files in different colors?[^4]: Stack Overflow 評論 — Typora 需在 Preferences → Markdown 中開啟雙等號高亮 [^5]: Codebase HQ — Syntax Highlighting in Markdown[^6]: Obsidian Help — 使用 Prism.js 進行語法高亮,參見 Prism 支援語言列表[^7]: CommonMark Spec — 最新規範,當前不包含 highlight 語法