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

幾個關鍵發現:

  1. GitHub 完全不支援文字高亮== 不解析,HTML 標籤被過濾。如果你需要在 GitHub README 裡高亮文字,目前只能用 粗體**粗體**)或行內程式碼(`程式碼`)來替代強調效果 [^3]。
  2. Obsidian 和 Typora 是體驗最好的== 語法和 <mark> 都支援,自訂顏色也沒問題。
  3. Jupyter/Colab 環境建議直接用 <mark>,最穩妥。

程式碼語法高亮:讓程式碼區塊自動著色

說完了文字高亮,接下來聊聊另一種「高亮」——程式碼語法高亮(Syntax Highlighting)。這個功能是讓程式碼區塊裡的關鍵字、字串、註解等根據程式語言自動上色,提升可讀性。

基本語法

在三個反引號後面加上語言名稱就行:

```javascript
function sayHello() {
  console.log("Hello, World!");
}
`` `

上面這段程式碼渲染出來,functionconsolelog 這些關鍵字會被自動標上不同的顏色。

不加語言名稱的話,程式碼區塊就是純灰色背景,沒有語法著色:

``` `
function sayHello() {
  console.log("Hello, World!");
}
`` `

行內程式碼也算一種「高亮」

用單個反引號包裹的文字會顯示為灰色背景的等寬字體:

在 JavaScript 中,使用 `console.log()` 輸出內容。

嚴格來說這不叫高亮,而是標記為「程式碼」,但視覺上確實起到了強調的效果。和 Markdown 粗體Markdown 斜體 類似,行內程式碼也是一種文字格式化手段。不過要注意,行內程式碼的語義是「程式碼」,不是「重點標記」,別為了好看就把普通文字都用反引號包起來 [^1]。

常用語言識別符

語言識別符語言識別符
JavaScriptjavascriptjsPythonpythonpy
HTMLhtmlCSScss
JavajavaC/C++c / cpp
GogoRustrust
PHPphpRubyruby
SQLsqlShellbashshell
JSONjsonYAMLyaml
TypeScripttypescripttsSwiftswift

實際上大多數 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 語法