行内元素:强调、链接、图片、代码、转义与 HTML 内嵌
基于 CommonMark 0.31.2 / GFM · 核于 2026-07
速查
- 强调:
*斜体*/_斜体_;**加粗**/__加粗__;***粗斜体***。⚠️ 侧翼规则:_在单词内部(两侧都是字母数字)不作分界符,护住snake_case;词内强调请用*。 - 行内代码:一对反引号
`code`;内容含反引号时用更多反引号定界(两侧数量相等),如两反引号包住含单反引号的内容;代码跨度内不再解析任何 Markdown/转义。 - 链接·行内:
[文字](url "可选标题"),标题渲染为悬停提示。 - 链接·引用式:正文
[文字][标签]+ 别处[标签]: url "标题";折叠式[文字][]、快捷式[文字](标签同文字)。利于 URL 复用、正文整洁。 - 链接·自动(CommonMark):尖括号包绝对 URI 或邮箱
`<https://a.com>`/`<a@b.com>`。裸 URL 成链是 GFM 扩展。 - 图片:
——比链接多前导!,方括号内是 alt;可用[](url)让图片可点击。 - 转义:
\+ 任意 ASCII 标点转字面(如\*\#\`\|);转义在代码块/代码跨度/自动链接/原始 HTML 内不生效。 - 实体与字符引用:
&©及&#字数;数字引用会被识别为对应字符。 - HTML 内嵌:Markdown 允许直接写原始 HTML 并原样透传;块级 HTML 标签内部默认不再解析 Markdown。
- 安全:透传即风险,用户内容必须 sanitize;GFM tagfilter 会转义
script/style/iframe等 9 个风险标签(仅一层,GitHub 另有后处理)——详见 GFM 扩展页。
一、强调:斜体、加粗与侧翼规则
强调分两级,可用星号或下划线:
*斜体* 或 _斜体_
**加粗** 或 __加粗__
***粗斜体*** 或 ___粗斜体___单个符号是斜体(emphasis / <em>),两个是加粗(strong / <strong>),三个是二者叠加。
关键差异在单词内部:CommonMark 用「左/右侧翼分界符(left/right-flanking delimiter run)」规则判定一个 */_ 能否作为开/闭标记。简化说——_ 在两侧都是字母数字时不被视为有效分界符,于是 snake_case、file_name 里的下划线不会被误当强调;而 * 没有这条内部限制。所以:
un*frigging*believable→ 词内frigging变斜体 ✅un_frigging_believable→ 不生效,原样保留下划线 ❌
结论:需要在单词内部做强调时,用 * 而不是 _。
二、行内代码跨度
行内代码用反引号包裹,内容以等宽字体原样显示,且内部不再解析任何 Markdown 语法或反斜杠转义:
使用 `const x = 1` 声明变量。当代码内容本身包含反引号时,不能用反斜杠转义(跨度内转义无效),而要用更多反引号作定界符(两侧数量相等、且与内容里的反引号数不同):
`` 用两个反引号包住含 ` 单反引号的内容 ``三、链接:行内、引用、自动
行内链接:方括号内是显示文字,圆括号内是 URL,URL 后可跟引号包裹的可选标题(渲染为悬停 title):
[CommonMark 官网](https://commonmark.org "悬停提示")引用式链接把 URL 定义与正文分离——正文写 [文字][标签],在文档别处集中定义标签。适合链接多的长文档,URL 可复用、正文更干净:
参见 [CommonMark][cm] 与 [GFM][gfm]。
[cm]: https://commonmark.org "标题可选"
[gfm]: https://github.github.com/gfm/它还有两个简写:折叠式 [文字][](标签留空,用文字当标签)和快捷式 [文字](直接用文字匹配定义)。
自动链接:CommonMark 的自动链接必须用尖括号包住一个绝对 URI 或邮箱,如 <https://example.com>、<user@example.com>。注意标准 CommonMark 下裸写的 URL 不会自动成链——那是 GFM 的扩展自动链接才有的能力。
四、图片
图片语法就是「链接前加一个感叹号」,方括号里的内容是 alt 替代文字(而非可点击文字),圆括号里是图片地址、可带可选标题:
想让图片可点击,就把图片语法整体当作链接的「文字」部分嵌进去:
[](https://example.com)五、转义与实体
要显示某个有特殊含义的字符本身,在它前面加反斜杠。CommonMark 规定任意 ASCII 标点字符都可被反斜杠转义:
\* 字面星号、\# 字面井号、\` 字面反引号、\| 字面竖线、\[ \]注意转义在代码块、代码跨度、自动链接、原始 HTML 内部不生效(这些语境本就原样处理)。此外 Markdown 也识别 HTML 实体与数字字符引用,如 © → ©、{ → 对应码位字符,可用来输入不便直接打的符号。
六、HTML 内嵌与安全
Markdown 从设计之初就允许直接内嵌原始 HTML:写 Markdown 表达不了的排版时(复杂表格、<details> 折叠、带 class 的容器等),直接写 HTML,它会被原样透传到输出:
<details>
<summary>点击展开</summary>
这里是被折叠的内容。
</details>一个传统约定要记住:块级 HTML 标签内部,默认不再把内容当 Markdown 解析(CommonMark 的「HTML 块」规则亦如此)——所以想在 <div> 里继续用 Markdown 语法,往往需要该解析器的额外支持或前后留空行的特定写法。
安全是内嵌 HTML 的另一面:既然 HTML 透传,用户提交的 Markdown 就可能夹带 <script>、<iframe> 等危险标签。因此渲染不可信来源的 Markdown 必须做 HTML 清洗(sanitize)。GFM 为此提供了 tagfilter(禁用原始 HTML) 扩展,会把 script、style、iframe、textarea 等 9 个风险标签的起始 < 转义成 < 使其变字面文本;但它只是一层——GitHub 在 GFM 转 HTML 之后还会做额外的后处理与清洗。自建渲染时应搭配 DOMPurify、sanitize-html 这类库。tagfilter 的完整名单见 GFM 扩展页。
行内元素与 HTML 安全过一遍后,进入 GFM 扩展:表格、任务列表、删除线、扩展自动链接与 tagfilter 的完整规则。