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 语法