I'll take a quiet life. A handshake of carbon monoxide.

0%

为Hexo博客标题自动添加序号:hexo-heading-index

原创文章,转载请标明出处:Soul Orbit
本文链接地址:为Hexo博客标题自动添加序号:hexo-heading-index

在Hexo更新到Hexo 3之后,它提供了一个函数给皮肤用来生成文章目录,不过虽然这个函数提供了一个参数可以在文章目录中输出标题序号,但是文章内部的标题却没有添加,所以阅读文章本身并不是那么直观。为了解决这个问题,我写了一个插件来解决这个问题:hexo-heading-index。

1. 安装

和其他插件一样,hexo-heading-index的安装非常直接:

1
npm install hexo-heading-index --save

2. 配置

hexo-heading-index的配置都放在了_config.yml中,但是可能没有那么的直观,所以我们先来看一个例子:

1
2
3
4
5
6
heading_index:
enable: true
index_styles: "{1} {1} {1} {1} {1} {1}"
connector: "."
global_prefix: ""
global_suffix: ". "

这个配置会让我们生成如”1.2.3.4. “这样的序号。为什么呢?

由于每个人喜欢的序号样式都不一样,为了生成各种样式的序号,我们把序号拆分成了多个部分:

1
<全局前缀 (global_prefix)><h1序号>[<连接符 (connector)><h2序号><连接符 (connector)>...<h6序号>]<全局后缀 (global_suffix)>

而对于每一个序号的样式定义,我们放在了index_styles中,它由1-6个序号样式用空格连接组成,每个样式如下:

1
<前缀>{序号类型[:样式:序号宽度]}<后缀>

现在我们再来看上面的配置,它其实是在指定全局前缀为空,全局后缀为”. “,连接符为”.”,每一级的标题序号都使用同样的序号类型:1,没有前缀和后缀,默认样式和序号宽度。这里类型”1”表示从1开始的数字序号,所以最后我们就会生成”1.2.3.4. “这样的序号了。

3. 序号样式

目前这个插件支持如下的一些序号类型:

  • 0: 从0开始的数字序号
  • 1: 从1开始的数字序号
  • i: 小写的罗马字符
  • I: 大写的罗马字符
  • a: 小写的英文字符(最大到z,如果序号大于26,那么就会被转化成z)
  • A: 大写的英文字符(最大到Z,如果序号大于26,那么就会被转化成Z)

另外对于序号”0”和”1’,我们还支持一些额外的样式:

  • x: 以小写16进制输出序号
  • X: 以大写16进制输出序号

此外,我们还能为”0”和”1”类型的序号指定宽度,比如,如果我们指定宽度为2,那么序号3就会输出成03。

4. 再举个例子

为了更好的说明这些配置的作用,这里再举一个例子。很多人写技术文章喜欢使用”0x00 0x01: “这类的序号,那么这里我们只需要这样配置即可:

1
2
3
4
5
6
heading_index:
enable: true
index_styles: "0x{0:X:2} 0x{0:X:2} 0x{0:X:2} 0x{0:X:2} 0x{0:X:2} 0x{0:X:2}"
connector: " "
global_prefix: ""
global_suffix: ": "