标题
标题是文档的骨架:它决定内容如何被分块、自动目录如何生成、读者能否在长文里快速定位。Markdown 的标题语法只有两种写法,却有几个容易被忽略的细节——比如井号后面必须跟一个空格,比如标题下面紧跟一行 --- 会被理解成另一种标题写法。这一页把标题的写法、层级规则和常见事故讲清楚。
# 一级标题
## 二级标题
### 三级标题
这一行行井号就是所谓的 ATX 风格。井号的数量决定级别,从 # 到 ###### 一共六级,再多就只是普通文字了。解析之后的结果是:
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
标题里可以放行内格式,比如代码和强调:
## 这是一个 `代码` 标题
<h2>这是一个 <code>代码</code> 标题</h2>
但标题只能包含行内内容。一旦遇到列表、代码块这类块级语法,标题就到此为止,后面的内容会另起一块:
## 配置说明
- 数据库地址
- 超时时间
<h2>配置说明</h2>
<ul>
<li>数据库地址</li>
<li>超时时间</li>
</ul>
另一种写法:Setext
Setext 风格把文字放在上面一行,下一行用等号或横线表示级别:=== 是一级标题,--- 是二级标题。
安装指南
========
前置条件
--------
<h1>安装指南</h1>
<h2>前置条件</h2>
Setext 更接近手写文档的习惯,但 --- 本身有歧义(它同时也是分割线的写法),所以日常写作更推荐 ATX 风格。
- 从一级开始,按层级递进,不要直接跳到四/五级。
- 同层级语义一致,便于生成目录与搜索。
这两条不是格式洁癖,而是有实际代价的。自动目录直接来自标题层级,跳级会让读者在侧边栏里看到一棵歪掉的树;把含义完全不同的内容塞进同一层标题,会让搜索结果和锚点链接一起失去区分度。一个页面通常只应有一个一级标题,它回答「这篇文档在讲什么」,其余标题都是它的下属。
| 写法 | 实际渲染 | 原因 |
|---|---|---|
#标题(井号后没有空格) | 普通段落 | ATX 要求井号后有空格 |
####### 七个井号 | 普通段落 | 只支持一级到六级 |
标题文字下面紧跟 --- | 二级标题 | Setext 下划线写法优先 |
| 标题后面直接跟列表 | 列表成为独立的一块 | 标题只包含行内内容 |
目录、锚点和交叉引用都建立在标题文本上。 标题一旦大改,指向它的锚点链接就会失效;把「安装」「使用」这类过于宽泛的词当作标题,也会让目录失去信息量。养成「标题写成可以独立成立的一句话」的习惯,比纠结该用几个井号更有价值。
给一篇「部署指南」安排标题层级:文档名是「部署指南」,下面有「前置条件」「安装依赖」「启动服务」三个小节。
解题思路: 标题层级要体现文档的从属关系,而不是按顺序编号。文档本身是顶级,用一级标题;三个小节是文档的下级,用二级标题;小节内部再分的内容才用三级标题。同一层级的标题之间不要越级使用。
详细步骤:
- 文档名「部署指南」是整篇文档的标题,用
#。 - 「前置条件」「安装依赖」「启动服务」三节是文档下的并列小节,用
##。 - 若某个小节下还有更细的步骤(如具体的安装命令),才在这一层用
###。 - 检验:从
#到##是逐级下降,读者看目录时能一眼看出从属关系。
最终答案:
# 部署指南
## 前置条件
## 安装依赖
## 启动服务读完这一页,你应当能写出规范的一到六级标题,能判断什么时候该用 ATX、什么时候可以用 Setext,也能在看到「标题没有渲染出来」时立刻想到井号后少了一个空格这类原因。接下来给长文搭骨架时,你可以先列出标题再填内容,让结构在动手写之前就稳定下来。
