Markdown语法 - 清单
清单也是我们写文的时候最常用的几个格式之一。而在Markdown语法里,清单的实现则很多样,也很复杂。
最常用的清单分两种:有序和无序
有序清单
有序清单像下面一样正常写,显示自然是正常的。
- 有序清单
- 嵌套
- 有序
- 清单
1. 有序清单
2. 嵌套
1. 有序(前面三个空格)
2. 清单(前面三个空格)
也可以来个不正常的,效果却相同。
1. 有序清单
1. 嵌套
1. 有序(前面三个空格)
1. 清单(前面三个空格)
或者更不正常的。
- 有序清单
- 嵌套
- 有序
- 清单
1. 有序清单
7. 嵌套
3. 有序(前面三个空格)
6. 清单(前面三个空格)
看出啥名堂了么?对,我真是按着语法块里面那样输入的,但是在显示的时候数字仍然是顺序的。有序清单的起始数字由没一个级别的第一个数字控制,然后顺序进行。
有序清单也可以使用右一半括号)代替点,跟使用点跟在数字后面效果是一样的,但是同一层级之间点和括号不可以混用,这里就不多说了。这样设计的好处是你不会弄混。
无序清单
无需清单比有序清单容易很多,前面可以有三种字符引导,这里只介绍简书APP最简单的一种。
常见效果
- 无序清单一
- 无序清单二
- 无序清单一
- 无序清单二
嵌套效果
- 嵌套
- 无序
- 清单
- 嵌套
- 无序(前面两个空格)
- 清单(前面两个空格)
或
- 嵌套
- 无序(前面三个空格)
- 清单(前面三个空格)
那么为什么有序清单前面要空三个空格,而无序清单两个空格就可以呢?原因是有序清单的标识由一个数字和一个标点组成,占两个字符,加上一个空格就是三个。而无序清单只有一个减号和一个空格,只占两个字符。前面加入空格,实际目的是让语法标识跟上一级别的文字对齐,达到分级效果。
无序清单跟有序清单也可以互相嵌套,也可以分更多级。
- 一级无序清单一
- 二级有序清单一
- 二级有序清单二
- 三级无序清单一
- 三级无序清单二
- 一级无序清单二
- 一级无序清单一
10. 二级有序清单一(前面两个空格)
20. 二级有序清单二(前面两个空格)
- 三级无序清单一(前面六个空格)
- 三级无序清单二(前面六个空格)
- 一级无序清单二(前面两个空格)
参考上面这个语法块,下一级的标识都是跟上一级的文字对齐的,这样方能正常显示。
但是你可能问了,也没对齐啊?第三级的减号明明没有跟第二级的文字对齐。那是因为空格的宽度要小于数字,但是在字符数量上是符合对齐这个原则的(英文、符号、空格占一个字符,中文字、中文符号占两个字符)。
还有一种不太常用的清单:任务清单
- 未完成
- 已完成
- [ ] 未完成
- [x] 已完成
子任务效果
- 主任务
- 子任务一
- 子任务二
- 子任务三
- 子任务四
- 子任务五
- 子任务六
- 子任务七
- 子任务八
- 子任务九
- [ ] 子任务十
- 子任务九
- 子任务八
- 子任务七
- 子任务六
- 子任务五
- 子任务四
- 子任务三
- 子任务二
- 子任务一
- [ ] 主任务
- [x] 子任务一(前面两个空格)
- [ ] 子任务二(前面四个空格)
- [ ] 子任务三(前面六个空格)
- [ ] 子任务四(前面八个空格)
- [ ] 子任务五(前面十个空格)
- [ ] 子任务六(前面十二个空格)
- [ ] 子任务七(前面十四个空格)
- [ ] 子任务八(前面十六个空格)
- [ ] 子任务九(前面十八个空格)
- [ ] 子任务十(前面二十个空格)
大家发现了吧,分级不是无限的,最多十个层级。子任务十由于位于第十一层级,无法被识别。
当然也可以与无序清单或有序清单嵌套。
- 与无序清单嵌套
- 已完成
- 未完成
- 与无序清单嵌套
- [x] 已完成(前面两个空格)
- [ ] 未完成(前面两个空格)
- 与有序清单嵌套
- 已完成
- 未完成
1. 与有序清单嵌套
- [x] 已完成(前面三个空格)
- [ ] 未完成(前面三个空格)
或
1. 与有序清单嵌套
1. [x] 已完成(前面三个空格)
2. [ ] 未完成(前面三个空格)
大家发现了吧,任务清单没有数字的概念,无论你使用的是无需清单还是有序清单,只要条目是任务,就没有数字在前面。必须注意的是,任务条目必须为清单条目,单独拿出来则没有效果。