【发布时间】:2022-08-19 21:30:29
【问题描述】:
我想将 Markdown 转换为带有标头编号的 HTML,从 <h2> 开始。
实现它的方法是什么?
pandoc 提供选项--number-sections(或-N),因此标题在输出中被编号。
现在我正在尝试使用此选项将 Markdown 转换为 HTML。
默认情况下,pandoc 的输出 HTML 标头级别从 <h1> 开始。这不是很理想,所以我想把它改成<h2>(而原来的markdown可能包含许多一级标题,输出的HTML应该最多包含1个<h1>)。
可以指定--shift-heading-level-by=1;然后,输出标头级别从<h2> 开始(请参阅Official Pandoc User\'s Guide,也可能还有this question)。
但是,它会弄乱部分编号!基本上,部分编号的级别也会发生变化。现在所有部分都在 \"0\" 下(如 0.1, 0.2, 0.2.1, ...)并且不存在 1 的部分。
pandoc 提供了另一个选项--number-offset=1,但它所做的只是抵消了像 \"0.1\"→\"1.1\" 这样的数字。然后,所有节号从 1 开始,没有节号为 2。显然,这没有任何意义。初始前缀编号“1.”是多余的,应该从所有部分编号中删除,如 1.1→1、1.1.4→1.4、1.2.3→2.3 等。
出于演示目的,这里是一个示例 Markdown 文本文件 (abc.md)
%Test-md
# First Header (1) #
## Header (1-1) ##
# Second Header (2) #
## Header (2-2) ##
### Header (2-3) ###
及其输出 HTML(简化)
pandoc -N --section-divs --shift-heading-level-by=1 -t html5 abc.md
<section id=\"first-header-1\" data-number=\"0.1\">
<h2 data-number=\"0.1\">0.1 First Header (1)</h2>
<section id=\"header-1-1\" data-number=\"0.1.1\">
<h3 data-number=\"0.1.1\">0.1.1 Header (1-1)</h3>
</section>
</section>
<section id=\"second-header-2\" data-number=\"0.2\">
<h2 data-number=\"0.2\">0.2 Second Header (2)</h2>
<section id=\"header-2-2\" data-number=\"0.2.1\">
<h3 data-number=\"0.2.1\">0.2.1 Header (2-2)</h3>
<section id=\"header-2-3\" data-number=\"0.2.1.1\">
<h4 data-number=\"0.2.1.1\">0.2.1.1 Header (2-3)</h4>
</section>
</section>
</section>
如何让 pandoc 以普通方式(1、2、2.1、2.2、2.2.1)进行编号,但输出标头级别从 <h2> 开始的 HTML?