87

我正在尝试使用类似于以下的部分/小节标题生成 html:

  1. 我的顶级主题
    1.1 我的第一个子主题
    1.2 另一个子主题
          1.2.1 一个子子主题
  2. 另一个顶级话题

是否有任何 Markdown 实现能够生成这些编号的部分标题?

提前致谢。

4

5 回答 5

63

是的,试试Pandoc。这对我有用:

pandoc --number-sections < test.md > out.html

来源

Markdown 生成您在原始帖子中提到的编号大纲如下所示:

# My top-level topic

## My first subtopic

## Another subtopic

### A sub-subtopic

## Another top-level topic

如果您想对子部分进行更深入的缩进,您可以使用内联 CSS 来实现。例如,将其放在上述 Markdown 源代码的顶部会缩进标题:

<style type="text/css">
  h2 { margin-left: 10px; }
  h3 { margin-left: 20px; }
</style>

但是假设您的标题下有文本段落...我不知道如何将其缩进到与上述标题相同的级别。

2015-10-18 更新Markdeep有编号的标题(和许多其他花哨的功能)。也检查一下!

于 2014-01-15T00:01:28.750 回答
27

如果您的降价工具支持 CSS 自定义主题,请在 CSS 中添加以下代码段以启用标题编号:

body {
    counter-reset: h1
}

h1 {
    counter-reset: h2
}

h2 {
    counter-reset: h3
}

h3 {
    counter-reset: h4
}

h1:before {
    counter-increment: h1;
    content: counter(h1) ". "
}

h2:before {
    counter-increment: h2;
    content: counter(h1) "." counter(h2) ". "
}

h3:before {
    counter-increment: h3;
    content: counter(h1) "." counter(h2) "." counter(h3) ". "
}

h4:before {
    counter-increment: h4;
    content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}

我使用Typora,它支持这种方法中的标题自动编号。

于 2017-04-26T04:31:01.597 回答
9

如果您想编辑 markdown 文件本身,而不仅仅是生成的 HTML 文件,请尝试使用 python 3 进行enumerate-markdown

pip install enumerate-markdown
markdown-enum filename.md 1 filename.md

示例 - 输入

# header 1
text
## header 2
text
# header 3
text

输出

# 1.  header 1
text
## 1.1  header 2
text
# 2.  header 3
text

如果您稍后编辑该文件并再次运行该脚本,那么它会更新旧的枚举。

于 2018-06-25T23:33:45.793 回答
2

正如@adam-monsen 指出的那样,“pandoc --number-sections”可以解决问题。您也可以简单地添加numbersections: true到 YAML-Header以激活文件的编号标题。

于 2017-06-06T15:48:39.610 回答
0

Markdown 旨在快速、轻便且易于使用,并且非常适合该要求。对于更复杂的格式,最好考虑降价以外的选项。不是逃避。通常,例如,使用 Microsoft 语言和工具,我想做“xyz”,然后意识到在那个世界中,您在设计上会远离“xyz”,转向首选/支持的方式来实现您的目标.

举个具体的例子,考虑 vscode。人们询问工具栏/自定义。Vscode 不是以工具栏为中心的。这是设计使然。设计意图是使用命令调色板Ctrl+Shift+P。通过不必经常自定义工具栏来节省时间,并且它提供了对所有命令的快速访问,而不是工具栏上的命令子集。

于 2020-03-06T20:55:21.300 回答