Skip to content

行内元素:强调、链接、图片、代码、转义与 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;可用 [![alt](img)](url) 让图片可点击。
  • 转义\ + 任意 ASCII 标点转字面(如 \* \# \` \|);转义在代码块/代码跨度/自动链接/原始 HTML 内不生效
  • 实体与字符引用&amp; &copy;&#字数; 数字引用会被识别为对应字符。
  • HTML 内嵌:Markdown 允许直接写原始 HTML 并原样透传;块级 HTML 标签内部默认不再解析 Markdown
  • 安全:透传即风险,用户内容必须 sanitize;GFM tagfilter 会转义 script/style/iframe 等 9 个风险标签(仅一层,GitHub 另有后处理)——详见 GFM 扩展页

一、强调:斜体、加粗与侧翼规则

强调分两级,可用星号或下划线:

md
*斜体*_斜体_
**加粗**__加粗__
***粗斜体***___粗斜体___

单个符号是斜体(emphasis / <em>),两个是加粗(strong / <strong>),三个是二者叠加。

关键差异在单词内部:CommonMark 用「左/右侧翼分界符(left/right-flanking delimiter run)」规则判定一个 */_ 能否作为开/闭标记。简化说——_ 在两侧都是字母数字时不被视为有效分界符,于是 snake_casefile_name 里的下划线不会被误当强调;而 * 没有这条内部限制。所以:

  • un*frigging*believable → 词内 frigging 变斜体 ✅
  • un_frigging_believable不生效,原样保留下划线 ❌

结论:需要在单词内部做强调时,用 * 而不是 _

二、行内代码跨度

行内代码用反引号包裹,内容以等宽字体原样显示,且内部不再解析任何 Markdown 语法或反斜杠转义:

md
使用 `const x = 1` 声明变量。

当代码内容本身包含反引号时,不能用反斜杠转义(跨度内转义无效),而要用更多反引号作定界符(两侧数量相等、且与内容里的反引号数不同):

md
`` 用两个反引号包住含 ` 单反引号的内容 ``

三、链接:行内、引用、自动

行内链接:方括号内是显示文字,圆括号内是 URL,URL 后可跟引号包裹的可选标题(渲染为悬停 title):

md
[CommonMark 官网](https://commonmark.org "悬停提示")

引用式链接把 URL 定义与正文分离——正文写 [文字][标签],在文档别处集中定义标签。适合链接多的长文档,URL 可复用、正文更干净:

md
参见 [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 替代文字(而非可点击文字),圆括号里是图片地址、可带可选标题:

md
![PixiJS Logo](/images/logo.png "鼠标悬停标题")

想让图片可点击,就把图片语法整体当作链接的「文字」部分嵌进去:

md
[![可点击的图片](/thumb.png)](https://example.com)

五、转义与实体

要显示某个有特殊含义的字符本身,在它前面加反斜杠。CommonMark 规定任意 ASCII 标点字符都可被反斜杠转义:

md
\* 字面星号、\# 字面井号、\` 字面反引号、\| 字面竖线、\[ \]

注意转义在代码块、代码跨度、自动链接、原始 HTML 内部不生效(这些语境本就原样处理)。此外 Markdown 也识别 HTML 实体与数字字符引用,如 &copy; → ©、&#123; → 对应码位字符,可用来输入不便直接打的符号。

六、HTML 内嵌与安全

Markdown 从设计之初就允许直接内嵌原始 HTML:写 Markdown 表达不了的排版时(复杂表格、<details> 折叠、带 class 的容器等),直接写 HTML,它会被原样透传到输出:

md
<details>
  <summary>点击展开</summary>
  这里是被折叠的内容。
</details>

一个传统约定要记住:块级 HTML 标签内部,默认不再把内容当 Markdown 解析(CommonMark 的「HTML 块」规则亦如此)——所以想在 <div> 里继续用 Markdown 语法,往往需要该解析器的额外支持或前后留空行的特定写法。

安全是内嵌 HTML 的另一面:既然 HTML 透传,用户提交的 Markdown 就可能夹带 <script><iframe> 等危险标签。因此渲染不可信来源的 Markdown 必须做 HTML 清洗(sanitize)。GFM 为此提供了 tagfilter(禁用原始 HTML) 扩展,会把 scriptstyleiframetextarea 等 9 个风险标签的起始 < 转义成 &lt; 使其变字面文本;但它只是一层——GitHub 在 GFM 转 HTML 之后还会做额外的后处理与清洗。自建渲染时应搭配 DOMPurify、sanitize-html 这类库。tagfilter 的完整名单见 GFM 扩展页


行内元素与 HTML 安全过一遍后,进入 GFM 扩展:表格、任务列表、删除线、扩展自动链接与 tagfilter 的完整规则。