Markdown 缩进:嵌套列表、段落与代码
通过嵌套项目符号列表、编号列表、续接段落和围栏代码的示例修正 Markdown 缩进,避免意外生成代码块。
要缩进 Markdown 子列表,请将它的标记对齐到父列表项正文的第一个字符下方。对于 - 父项,需要两个空格;对于 1. 父项,则需要三个空格。缩进控制的是文档结构,因此给普通段落添加空格,与调整 Word 段落的视觉缩进,可能产生完全不同的效果。
先在 Markdown 查看器中试试这个示例:
- 项目文档
- 安装指南
- 发布说明
- 审阅检查清单
安装指南和发布说明应显示在项目文档项之下。审阅检查清单应保持在最外层。
从父列表项的正文位置开始计算
对于标记后写一个空格的普通列表项,请参照以下对齐规则:
| 父项开头 | 正文前的字符数 | 子列表缩进 |
|---|---|---|
- | 2 | 2 个空格 |
1. | 3 | 3 个空格 |
12. | 4 | 4 个空格 |
100. | 5 | 5 个空格 |
因此,“始终使用两个空格”这样的通用规则并不适用于编号列表。GitHub 的嵌套列表文档展示了如何相对于父项正文对齐,其中也包含较长数字标记的情况。
1. 准备发布
- 确认版本号。
- 更新变更日志。
2. 发布文档
嵌套标记前有三个空格。如果它们从左边界开始,就会创建一个独立列表,而不属于第一个编号步骤。
使用较旧的 Markdown 处理器时,也请在该处理器中预览文件。本文示例面向 CommonMark 风格的解析和 GitHub Markdown;旧版实现对嵌套块的识别方式可能不同。
在列表项内添加段落
较长的解释不一定需要单独的项目符号。留一个空行,再将新段落对齐到列表项正文下方:
1. 审阅安装指南。
确认新读者无需打开内部文档,
就能完成设置。
2. 批准发布说明。
解释段落属于第一步。除非添加明确的换行标记,否则其中的两行源码会连续排版。
省略这三个空格,可能会结束编号列表,将解释变成普通段落。在某些编辑流程中,这还可能导致后面的列表重新开始编号。
相同模式也适用于项目符号列表:
- 安装指南
包含前置条件、设置命令和验证步骤。
- 发布说明
如果解释包含多句话,请使用独立段落。如果它包含多项需要读者逐一浏览的内容,请使用子列表。
在编号步骤内放置代码
围栏代码能清楚地标示命令示例的边界。将起始围栏、内容和结束围栏都缩进,以确保代码块仍属于该列表项:
1. 检查已安装的版本。
```sh
node --version
```
将结果记录在审阅备注中。
2. 运行项目检查。
这里,围栏从 检查 的第一个字下方开始。围栏后的段落也采用相同的对齐方式,因此同样保留在第一步之内。
如果下一个编号步骤变成了代码块的一部分,请检查结束围栏。如果代码出现在列表之外,请检查围栏前的空格。关于语言标签和字面反引号,请参阅代码块指南。
为什么四个空格会把文本变成代码
在文档最外层,空行之后某行前面的四个空格,可以创建缩进代码块:
一个普通段落。
这一行会显示为代码。
这是 Markdown 有意设计的语法,并不是缩进控件失灵。CommonMark 缩进代码块参考文档解释了缩进和块边界的作用。
如果一个缩进行紧跟普通段落文本,其解析会受到不同的约束,因此添加空格并不是创建段落视觉缩进的可靠方式。在列表内部,所需空格数还取决于包含它的列表项。
引用内容请使用引用块。如果最终报告中的普通正文需要首行缩进,请在 Markdown 中保留普通段落,并在导出后到 Word 中设置段落格式。这样的选择能保留内容原本的含义。
排查问题时优先使用空格
制表符可以占据多个显示列,而且不同编辑器显示的宽度可能不同。如果源码中的列表看似对齐,渲染却不正确,请在编辑器中显示空白字符,并将行首制表符替换为所需数量的空格。
不要不加区分地替换代码示例内部的制表符。那里的空白可能就是示例本身的一部分。只清理决定外层列表结构的 Markdown 标记和续接内容的缩进。
避免使用重复的不换行空格实体来模仿嵌套列表。这可能让文本在某个预览中看起来向右移动了,但底层文档仍然只是互不关联的段落。
导出 Word 前验证结构
检查一个具有代表性的章节,其中包含父列表项、子列表、第二个段落和围栏代码块。在 Markdown 转 HTML 转换器中,真正的嵌套列表应包含在它的父列表项内部;仅有视觉偏移并不能建立这种关系。
然后使用 Markdown 转 Word 转换器并打开 DOCX。检查编号是否按预期继续,以及命令是否仍然属于相应步骤。Word 的列表样式可能采用与浏览器不同的视觉间距,因此在分享之前,应同时检查层级结构和最终文档的外观。