Markdown 高亮标记

在写读书笔记或者代码审查意见的时候,经常需要把某段文字"画重点"——就像用荧光笔在纸上划一道。HTML 里有现成的 <mark> 标签,但在 Markdown 里,高亮标记(highlight / mark)属于扩展语法,不是所有平台都支持。今天就把怎么用、在哪能用、不支持怎么办,一次讲清楚。

什么是 Markdown 高亮标记

高亮标记就是在文字后面加一层背景色(通常是黄色),让它看起来像是被荧光笔划过一样。效果类似这样:

这段话里有一个 ==重点内容== 被高亮了

渲染后,"重点内容"三个字会显示黄色背景。在 HTML 里,这对应 <mark> 元素,表示"因为相关性而标记/高亮的文本" 。

需要明确一点:高亮不是 Markdown 标准语法的一部分。原始的 Markdown 语法说明和 CommonMark 规范里都没有定义高亮语法,它是各扩展实现自己加的 。所以你会看到有的平台支持、有的不支持,后面会详细说。

双等号语法 ==highlight==

基本写法

最常见的高亮语法是用双等号把文字包起来:

这个功能在 ==v2.0 版本== 中已经修复了

渲染效果是 "v2.0 版本" 显示为黄色高亮背景。语法很简单,跟 Markdown 加粗**Markdown 斜体* 是一个套路,只是换成了 ==

高亮中包含其他格式

高亮的文字里可以同时用其他 Markdown 语法:

这个 API 已经 ==**废弃**==,请使用新版本

这里 "废弃" 既是高亮又是加粗。渲染的时候会同时显示黄色背景和粗体字。

也可以嵌套链接:

详见 ==[官方文档](https://example.com)== 中的说明

多个高亮

一篇文章里可以有多处高亮:

==第一点==:系统架构需要优化
==第二点==:数据库查询效率偏低
==第三点==:缓存策略需要调整

连续多行高亮

每行独立加 ==

==2024年Q1:完成架构重构==
==2024年Q2:上线新缓存系统==
==2024年Q3:性能优化达标==

HTML mark 标签:全平台通用方案

说实话,==highlight== 语法虽然好用,但兼容性是个大问题。如果目标平台不支持双等号语法,最靠谱的替代方案是直接用 HTML 的 <mark> 标签:

这个功能在 <mark>v2.0 版本</mark> 中已经修复了

因为绝大多数 Markdown 解析器都会保留 HTML 标签,所以这个写法几乎在所有平台都能正常渲染 。缺点是写起来比 == 麻烦一些,但至少能保证效果。

我之前在 Obsidian 里用 ==highlight== 写了一堆读书笔记,高亮标注做得特别漂亮。后来想把其中一段贴到 GitHub issue 里,结果推上去一看——== 原样显示,完全没渲染。从那以后我养成了一个习惯:要跨平台发布的内容,统一用 <mark> 标签,只在 Obsidian 和 Typora 这类确定支持 == 的编辑器里才用双等号语法。

mark 标签的语义

<mark> 不只是视觉效果,它有明确的语义——表示"因为相关性而被标记的文本"。典型的使用场景包括:

  • 搜索结果中高亮匹配的关键词
  • 引用文中高亮原作者没有强调的部分
  • 待办清单中标记进度

如果你的高亮纯粹是为了视觉强调,用 Markdown 加粗 可能更合适。<mark> 适合的是"这段文字在当前上下文中有特殊相关性"的场景 。

自定义高亮颜色

默认的黄色背景不一定能满足所有需求。比如在深色主题下,黄色高亮可能太刺眼;或者你想用不同颜色区分不同类型的高亮。

用 CSS 改变颜色

<mark> 标签支持 inline style:

<mark style="background-color: #ff6b6b;">红色高亮</mark>
<mark style="background-color: #51cf66;">绿色高亮</mark>
<mark style="background-color: #339af0;">蓝色高亮</mark>

这在大多数支持 HTML 的 Markdown 平台上都能工作。但要注意,有些平台(比如 GitHub)会过滤掉 inline style,这种情况下自定义颜色就没辙了。

在 Typora 中自定义

Typora 支持通过 CSS 主题文件修改高亮颜色。在主题 CSS 文件中添加:

mark {
  background-color: #fff3bf;
  padding: 0.1em 0.2em;
  border-radius: 2px;
}

我之前在 Typora 里用这个方法把高亮颜色改成了淡蓝色,因为默认的黄色在我用的暗色主题下对比度太低,几乎看不出来。改了之后在编辑和导出 PDF 的时候效果都很好。

各平台兼容性对比

这是大家最关心的部分。我整理了主流平台对两种高亮方式的支持情况:

平台==highlight==HTML <mark>备注
Obsidian原生支持双等号语法
Typora原生支持,可自定义颜色
Pandoc需启用 highlight 扩展
GitLabGLFM 原生支持
Jupyter Notebook通过扩展支持
GitHub不支持 ==,需用 <mark>
VS Code 预览不支持 ==
CommonMark标准不包含高亮语法
Stack Overflow两种都不支持
Notion使用自己的高亮语法

几个关键点:

  • GitHub 是最常见的"不支持双等号"平台,在 GitHub 上写 README、issue、PR 描述只能用 <mark>
  • Obsidian 和 Typora 是最友好的,双等号语法和 HTML 标签都支持
  • GitLab 原生支持,这点比 GitHub 强
  • Stack Overflow 完全不支持高亮,连 <mark> 都会被过滤掉

什么时候用高亮 vs 加粗 vs 其他格式

高亮、加粗、Markdown 下划线、Markdown 删除线 都能起到"强调"的作用,但语义不同:

格式语法语义适用场景
高亮==text== / <mark>当前上下文相关读书笔记、代码审查意见
加粗**text**重要性强调标题、关键词、警告
删除线~~text~~不再准确/已完成废弃内容、任务完成
下划线<u>text</u>专有名词、拼写提示术语标注

简单来说:想让读者"注意这段在当前语境下很重要"用高亮,想让读者"这个词本身很重要"用加粗。

实际使用场景

读书笔记

作者认为 ==技术债务就像金融债务==,短期借款可以加速开发,但如果不及时偿还,利息会越滚越多,最终拖垮整个项目。

在读书笔记里用高亮标记原文关键句,配合自己的批注,复习的时候一眼就能看到重点。

会议纪要

## 项目进度同步

- 前端重构已完成 80%,预计 ==本周五== 上线测试环境
- 后端 API 变更需要 ==协调移动端团队== 同步修改
- 数据库迁移方案 ==已获 DBA 审批==

用高亮标记待办事项的截止日期和关键决策,扫一眼就知道重点。

Changelog / 更新日志

## v3.2.0 更新内容

- ==新增:== 支持暗色主题切换
- ==修复:== 文件上传偶现 500 错误
- ==破坏性变更:== 移除了 `legacyMode` 配置项

用高亮标记变更类型,让读者快速定位自己关心的更新。

常见问题

GitHub 上怎么高亮文字?

GitHub 不支持 ==highlight== 语法。替代方案是直接用 HTML:

这是 <mark>高亮文字</mark>

如果 GitHub 把 <mark> 也过滤了(极端情况),可以用加粗 **text** 或者用代码反引号 `text` 来模拟视觉区分。

高亮语法是 Markdown 标准的一部分吗?

不是。高亮属于扩展语法,不在 CommonMark 规范和原始 Markdown 语法说明中 。它是各解析器(Obsidian、Typora、Pandoc 等)自行实现的扩展功能。

==highlight== 和 有区别吗?

渲染结果一样,==text== 在支持的解析器中会被转换为 <mark>text</mark>。区别只是语法糖——== 写起来方便,但兼容性差;<mark> 写起来啰嗦,但几乎全平台通用。

Notion 里能用 Markdown 高亮吗?

Notion 有自己的高亮功能(/highlight 命令或者选中文本后设置背景色),但不支持 Markdown 的 ==highlight== 语法,也不支持 <mark> 标签。需要用 Notion 自己的方式操作。


参考来源

: Markdown Guide — Extended Syntax,Markdown 社区权威参考 : Stack Overflow — Text highlight in markdown: MDN Web Docs — HTML Mark Element: Obsidian 官方文档 — Formatting and syntax: GitLab Docs — GitLab Flavored Markdown (GLFM)