使用pandoc将reStructuredText转Markdown时标题转换不符合预期
这是因为你对reStructuredText(rst)的标题级别规则,以及pandoc默认的Markdown转换逻辑不熟悉,pandoc的转换结果是完全符合规范的。
1. rst的标题级别不是固定绑定下划线字符
rst里的标题级别不取决于你用的是=/-/+这类字符,而是由文档中首次出现的下划线样式的顺序来决定优先级:
- 第一个出现的下划线样式(你的例子里是
=)对应最高级别(一级标题) - 第二个出现的(你的例子里是
-)对应二级标题 - 第三个出现的(你的例子里是
+)对应三级标题
2. pandoc默认的Markdown转换规则
Markdown原生的Setext标题(即文本下方加下划线的格式)只支持两级:=对应一级,-对应二级,没有第三级的Setext格式。所以pandoc默认会做如下处理:
- 将rst中的前两级标题,转换成对应的Setext样式Markdown标题(也就是你看到的
Heading 1加=、Heading 2加-的格式) - 第三级及以下的rst标题,自动转为Atx样式(即
#开头的格式),也就是你看到的### Heading 3
3. 如何得到你预期的全Atx格式标题
如果你希望所有标题都转换成#开头的Atx格式,只需要在转换命令中添加--markdown-headings=atx参数:
pandoc test.rst -f rst -t markdown --markdown-headings=atx --output test.md
执行这个命令后,输出结果就会和你预期的完全一致。
内容的提问来源于stack exchange,提问作者buhtz
相关产品推荐
相关产品推荐

