Markdown 分割线怎么打?
顺便讲清 --- 变大标题的坑
想在 Markdown 里加一条分割线(也叫分隔线、水平线),写法很简单:单独起一行,连打至少三个 -、* 或 _,比如 ---、***、___,前后各空一行就行。
但很多人真正的问题不是不会写,而是写了 --- 之后,上面那行字突然变成了大标题。这不是 bug,是 --- 在 Markdown 里身兼两职。下面先讲写法,再拆这个坑。
另外别把分割线和换行搞混:按回车不换行是另一个问题,看 Markdown 换行为什么不生效。
分割线的正确写法
- 至少三个相同的符号,单独占一行:
---、***或___。多于三个也行,------同样是分割线。 - 前后各空一行,尤其是上面那行,不能省。
- 三种符号渲染出来的横线一模一样,选哪个看个人习惯。
对 Markdown 基础符号还不熟的话,可以先看 Markdown 怎么写。
--- 为什么会把文字变成标题(Setext 标题)
Markdown 的标题有两种写法。常见的一种是行首加 #;另一种叫 Setext 标题:在文字的下一行写一排 = 或 -,上面那行文字就分别变成一级、二级标题。所以下面这段:
上一段的文字。
--- 在 Markdown 眼里不是「一行字加一条横线」,而是一个 Setext 标题:文字是标题内容,--- 是它的下划线。解法就一个字:空——在文字和 --- 之间空一行,它就老老实实变回分割线。
还有一个身份要认识:文件最顶上成对出现的 ---,根本不是想画分割线。那是 YAML frontmatter,一块元数据,有的查看器在顶部显示的怪表格就是它。
三种情况对照
| 你看到的现象 | 原因 | 解法 |
|---|---|---|
| --- 渲染成一条横线 | 前后都有空行,写法正确 | 不用改,这就是分割线 |
| --- 上面那行文字变成了大标题 | --- 紧贴文字,被当成 Setext 标题的下划线 | 在文字和 --- 之间空一行 |
| --- 什么都没渲染出来 | 符号不足三个,或没有单独占一行 | 至少三个、单独一行、前后空行 |
正确写法和踩坑写法放在一起对比:
正确写法(--- 前后都空一行):
上一段的文字。
---
下一段的文字。
踩坑写法(--- 紧贴文字,上面那行会变标题):
上一段的文字。
--- 记住两点就不会再踩:--- 上面永远空一行;或者分割线一律用 ***,它没有标题这个副业。
边打边看,当场确认
判断 --- 到底渲染成了什么,最直接的办法是找个能渲染的编辑器看一眼。NoteLoom 是一个在浏览器里读写本地 .md 文件的编辑器:在 source 视图里打字,live 和 reading 视图立刻显示渲染结果,横线还是标题一目了然,空行当场补齐。
它遵循 CommonMark 标准,你在这里看到的行为和多数 Markdown 工具一致。
具体操作:用 Chrome / Edge / Arc 打开 app.noteloom.cc,挂载一个本地文件夹,在 source 视图里写、看 live 视图的渲染。文件直接存回本地,不上云、不用注册账号。
FAQ
Markdown 分割线怎么打?
为什么我打的 --- 没变成分割线,反而把上面一行变成了大标题?
---、***、___ 三种分割线有区别吗?
分割线前后必须空行吗?
分割线和换行是一回事吗?
怎么快速确认我打的 --- 是分割线还是标题?
输入 ---,立刻看到它渲染成什么
用 Chrome / Edge / Arc 打开 NoteLoom,挂载一个本地文件夹,在 source 视图里打 ---,live 视图立刻告诉你它是分割线还是标题。文件直接存回本地,不用装软件,也不用注册账号。