因为生成页面时用的markdown引擎是PHP,然后预览用的是JS,是两套系统,所以在一些边边角角会有差异。
你原先的写法是:
1. 列表第一项
2. 列表第二项
```
代码段
```
3. 列表第三项
预览显示了符合你期望的代码,但是实际上预览的引擎是有问题的,因为代码段和三个列表项是同一缩进,也就是层级是一样的,因此,代码段不应解析为第二个列表项的附属内容,而应该解析为独立的内容。然后第“三”个列表项被解析为新列表的开头(因为Markdown的数字列表,前面的数字会自动重排的)。所以预览引擎的处理其实是错误的。
那么正确的写法应该是增强一重缩进,表明代码段是附属于第二个列表项的:
1. 第一项
2. 第二项
```
代码段
```
3. 第三项
或者使用缩进四格的方式表示代码段,而不是使用三个反引号的方式,缩进四格表示代码段,再缩进四格表示附属列表,总共缩进八格。
1. 第一项
2. 第二项
代码段
3. 第三项
按照这个写法改了你的博客后,显示就符合预期了。
Markdown列表内嵌套列表和代码段是一个比较复杂的特性,容易出错(markdown撰写者和解析引擎都不容易写对),算是Markdown的一个痛点了。