iPhone 18 Pro / Pro Max 和 折叠屏 iPhone Duo 使用体验

iPhone 18 Pro / Pro Max 和 折叠屏 iPhone Duo 使用体验


title: Markdown 语法测试文档 author: 编辑器测试套件 version: 1.0 tags:

  • markdown
  • test
  • syntax date: 2026-09-30

Markdown 语法全量测试

用途:把本文完整粘贴进编辑器,对照「源码 / 预览 / 导出 HTML / 导出 PDF」是否一致。 约定:每个小节标题后有「期望效果」一行,便于人工验收。

跳转到目录 · 跳转到边界用例 · 跳转到 HTML


目录


01. 标题

期望效果:ATX 与 Setext 两种标题都能渲染;h1–h6 层级正确;闭合井号被忽略。

ATX 一级标题

ATX 二级标题

ATX 三级标题

ATX 四级标题

ATX 五级标题
ATX 六级标题

Setext 一级

Setext 二级

带闭合井号的六级

标题里有 行内代码 和 加粗 以及 链接

02. 段落与换行

期望效果:空行分段;单换行在 CommonMark 下应合并为一行(除非两空格或 \ 硬换行)。

这是第一段。同一段里的 这一行如果没有两个空格或反斜杠,预览里应和上一行连在一起。

这是第二段,和上一段之间有空行。

硬换行(行尾两个空格)下一行应换行: 这是硬换行后的一行。

反斜杠硬换行 这也应换行。

中文标点测试:你好,世界!「引号」『书名』——破折号…省略号(全角)(半角).

很长一行用于测试软换行与横向滚动:Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 中文夹杂 English 以及 1234567890 连续数字与超长URL https://example.com/very/long/path?query=1&foo=bar#hash

03. 强调

期望效果:斜体、粗体、粗斜体、下划线(若支持)、互相嵌套不串味。

单星号斜体 和 单下划线斜体

双星号粗体 和 双下划线粗体

粗斜体 和 粗斜体

粗体里有 斜体 再回来

斜体里有 粗体 再回来

删除线(GFM)

这是 中文加粗 和 中文斜体,中间不要多空格。

未闭合应保持原样或按解析器规则降级:*未闭合斜体

**代码里的星号不应加粗**

04. 引用

期望效果:多层引用、引用内列表/代码/标题均可。

一级引用。

同一引用的第二段。

一级

二级

三级

回到一级

引用里的标题

  • 引用里的列表 A
  • 引用里的列表 B
console.log('blockquote + fence')

嵌套引用里的 加粗 和 code

05. 列表

期望效果:有序/无序、多级缩进、松散/紧凑、列表中嵌套段落和代码。

无序:

  • 减号一项
  • 减号二项
    • 二级
      • 三级
  • 加号一项
  • 星号一项

有序:

  1. 第一
  2. 第二
    1. 二级 2.1
    2. 二级 2.2
  3. 起始编号可以不是 1(有的实现会尊重 10)

紧凑列表:

  • one
  • two
  • three

松散列表(项之间空行):

  • 第一项

    第一项的续段,应缩进属于该项。

  • 第二项

    print("列表里的代码块")
    

混合:

  1. 有序开始

    • 里面套无序
    • 再一项
  2. 回来有序

    1. 再套有序
    • 有的解析器允许这种混写

06. 任务列表

期望效果:复选框可渲染;若编辑器可交互,勾选不应破坏源码其它部分。

  • 已完成
  • 大写 X 也应视为完成(GFM)
  • 未完成
    • 嵌套已完成
    • 嵌套未完成
  • 任务项里有 加粗 和 code 以及 链接
  1. 有序任务(部分实现支持)
  2. 有序未完成

07. 链接

期望效果:行内、引用式、自动链接、标题 tip、相对路径。新标签需 HTML,见本节末。

行内:Example

带 title:Example

相对路径:同文档锚点 和 相对文件

引用式链接:GitHub 和 同样可省略标识

快捷引用:shortcut

自动链接:https://example.com 和 user@example.com

URL 直接写出:https://example.com/path?q=1&b=2#frag

空链接与残缺(回归): 有文字无地址 [坏括号](https://example.com

新标签打开(HTML,标准 MD 无此语法):

新标签打开 example.com

08. 图片

期望效果:能显示;alt / title 正确;失败时有占位;和链接组合可用。

行内:

占位图 alt

引用式:

另一张"引用式图片"

图片即链接:

可点击的图

残缺图片(应显示 alt 或破损图标):

不存在的图

空 alt:

09. 代码

期望效果:行内代码保留反引号内容;围栏代码有语言高亮;缩进代码块生效;围栏内的 MD 不被解析。

行内:const x = 1 以及中文 打印('你好')

多个反引号:代码里有 `反引号`

缩进代码块(4 空格):

def indented(): return True 围栏无语言:

plain text
**这里不该加粗**
- 这里不该变列表

JavaScript:

function greet(name) {
  const msg = `Hello, ${name}!`
  console.log(msg)
  return { ok: true, name }
}

Python:

from typing import Optional

def fib(n: int) -> list[int]:
    a, b = 0, 1
    out = []
    for _ in range(n):
        out.append(a)
        a, b = b, a + b
    return out

TypeScript:

type User = { id: string; name?: string }
const u: User = { id: "1" }

JSON:

{
  "ok": true,
  "items": [1, 2, 3],
  "nested": { "a": "b" }
}

Bash:

#!/usr/bin/env bash
set -euo pipefail
echo "hello" | awk '{print toupper($0)}'

Diff:

- old line
+ new line

HTML 作为代码(不应被当 HTML 执行):

<script>alert('xss?')</script>
<img src=x onerror=alert(1)>

围栏里再写围栏(外层用更多反引号):

```js
console.log('nested fence')
```

行内与围栏混排:函数 foo() 如下:

foo()

10. 表格

期望效果:对齐、空单元格、单元格内强调/代码/链接、管道符转义。

左对齐居中右对齐默认
abcd
粗体斜体code链
中文日本語한글emoji ✅
空左空右留白

单元格里的管道(应转义或用 HTML):

表达式含义
`ab`
ab

不对齐的残表(看容错):

AB
12

只有表头:

OnlyHeader

11. 分割线

期望效果:三种写法都变成 <hr>,且不要把前面标题吃掉。






12. 脚注

期望效果:若支持 GFM/扩展脚注,角标可跳转;不支持则原样显示。

这里有一个脚注1,还有一个具名脚注2。

重复引用同一脚注应指向同一处1。

13. 转义

期望效果:反斜杠后的标记字符按字面显示。

*不斜体* _不斜体_ **不粗体**

# 不是标题

- 不是列表

[不是链接](https://example.com)

`不是代码`

1. 不是有序列表

\ 反斜杠本身

14. 原始 HTML

期望效果:允许的标签渲染;危险脚本应被转义或过滤;target=_blank 可用。

普通标签:Ctrl + S sub sup

换行:第一行第二行

详情折叠:

折叠里的 Markdown 有的实现会解析,有的不会。

新标签链接:

HTML 新标签

居中(若未禁 style):

注释不应显示:

XSS 回归(预览里不应弹窗):

15. 定义列表

期望效果:部分方言(PHP Markdown Extra / pandoc / kramdown)支持。不支持则显示为普通段落。

Markdown : 一种轻量标记语言

编辑器 : 用来写和预览 Markdown 的工具 : 可以有源码模式与所见即所得

16. 删除线 / 高亮 / 上下标

期望效果:按编辑器声明的方言渲染;不支持则保留源码。

删除线

==高亮(部分实现)==

H2O 与 19^th^(pandoc 风格)

H2O 与 19th(HTML)

++插入/下划线(部分实现)++

17. 数学公式

期望效果:若集成 KaTeX/MathJax,行内与块级公式正确;否则保留美元符号。

行内:质能方程 E=mc2E = mc^2,以及 ∑i=1ni=n(n+1)2\sum_{i=1}^{n} i = \frac{n(n+1)}{2}。

块级:

∇×B=μ0J+μ0ε0∂E∂tf(x)=∫−∞∞f^(ξ) e2πixξ dξ\begin{aligned} \nabla \times \mathbf{B} &= \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} \\ f(x) &= \int_{-\infty}^{\infty} \hat{f}(\xi)\,e^{2\pi i x \xi}\,d\xi \end{aligned}

可能冲突的美元:价格是 5到5 到 10,不应被当成公式(看实现是否要求空格/闭合)。

18. 图表(Mermaid)

期望效果:若支持 mermaid,图能出来;否则显示为代码块。

flowchart LR
  A[源码] --> B{解析器}
  B -->|CommonMark| C[AST]
  B -->|GFM| D[AST + 扩展]
  C --> E[渲染]
  D --> E
sequenceDiagram
  participant U as 用户
  participant E as 编辑器
  participant P as 预览
  U->>E: 输入 Markdown
  E->>P: 更新 AST
  P-->>U: 渲染结果

19. 提示块 / Callout

期望效果:按你们实现的语法渲染。下列几种都写上,看哪一种生效。

!!! note 标题 这是 mkdocs-style admonition。

[!NOTE] GitHub style alert: NOTE

[!TIP] GitHub style alert: TIP

[!IMPORTANT] GitHub style alert: IMPORTANT

[!WARNING] GitHub style alert: WARNING

[!CAUTION] GitHub style alert: CAUTION

:::info 部分编辑器的容器语法 :::

20. 目录与锚点

期望效果:自动生成的 heading id 稳定;中文标题可跳转;重复标题有去重后缀。

重复标题测试 重复标题测试

自定义锚点(部分实现 {#id}):

自定义 ID {#custom-id}

跳转到 自定义 ID 和 重复标题

21. Emoji 与特殊字符

期望效果:emoji 原样或短码替换;零宽字符不破坏加粗;RTL 文本不把布局撑坏。

短码(若支持)::smile: :rocket: :warning:

字符:✅ ❌ ⚠️ 中 文 ✨ 😊 🔥

组合:加粗✅ 和 code🚫

RTL:العربية עברית

零宽连接:加粗字(中间无隐藏字符)

特殊空格与不可见字符附近的强调:斜体

版权符号 © ® ™ ± × ÷ ≠ ≤ ≥ ∞

99. 边界与回归用例

99.1 标题与列表混淆

#不是标题(井号后无空格)

-# 也不是标题

99.2 列表与代码缩进

  • 列表项

    这 6 个空格:有的解析器当成代码,有的当成续行。

99.3 引用结束边界

引用结束下一行不应再引用 这一行应是普通段落。

99.4 强调边界(CommonMark 左右侧规则)

abc 中间斜体 abc 中间粗体 中文斜体中文 file_name.txt 中的下划线不应变成斜体 foo_bar_baz * 和 ** 单独出现

99.5 未闭合与交错

**加粗 *交错 _再交错

99.6 链接括号与空格

空格前 多行文字 仍是链接

链接(b) 后面括号不应吞进 URL

99.7 表格与列表相邻

AB
12
  • 表后列表应独立

99.8 代码围栏未闭合

const dangling = true
这段到文末如果没闭合,看编辑器是否吞掉后续内容。

### 99.9 仅空白与空文档附近

上面有意留一个「看起来像未闭合围栏」的用例。若你的解析器会把后文全部吃进代码块,请把本小节当作失败用例。

下面重新开始一段正常文本:围栏容错测试结束。

### 99.10 主题切换 / 暗色模式用对比色

**粗体** *斜体* ~~删除~~ `code` [链接](https://example.com)

| 浅色应可读 | 深色应可读 |
| --- | --- |
| #333 on #fff | #eee on #111 |

### 99.11 拷贝粘贴与 Windows 换行

本文件使用 LF。若从 Windows 粘贴出现 CR+LF,列表和代码块缩进不应错乱。

### 99.12 超大单元格 / 长单词

| 短 | 长 |
| --- | --- |
| ok | SupercalifragilisticexpialidociousSupercalifragilisticexpialidocious |

### 99.13 YAML / Front matter 回归

文件开头的 `---` 是 front matter。正文中的 `---` 应是分割线,不应再次开启 front matter。

---

正文分割线之后的文字。

### 99.14 导出检查清单

- [ ] 预览与源码滚动同步(若有)
- [ ] 撤销/重做不丢光标
- [ ] 输入 `**` 时输入法中文不打断
- [ ] 粘贴富文本转 MD 是否符合预期
- [ ] 导出 HTML 后外链是否带 `rel`
- [ ] 导出 PDF 分页时表格/代码不被截断
- [ ] 暗色模式下对比度
- [ ] 大文档(本文件 x10)输入不卡

---

## 验收速查

| 模块 | 通过标准 |
| --- | --- |
| 标题 | h1–h6 + Setext 都对 |
| 段落 | 空行分段,硬换行生效 |
| 强调 | 嵌套正确,文件名下划线不加斜体 |
| 列表 | 三级嵌套、松散项、混合类型 |
| 任务 | 复选框渲染,嵌套可用 |
| 链接 | 行内/引用/自动/锚点 |
| 图片 | 显示或优雅失败 |
| 代码 | 围栏内 MD 不解析,高亮可选 |
| 表格 | 对齐、空单元格、管道 |
| HTML | 安全过滤脚本,允许的标签可用 |
| 公式 / Mermaid | 按产品范围:支持则渲染,不支持则降级为源码 |

测试结束。

ddd

ddd

d

Footnotes

  1. 这是第一个脚注,可含 强调 和 code。 ↩ ↩2

  2. 多段脚注。

    第二段仍属于该脚注。 ↩