You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Typst的#enum函数实现技术报告式段落编号?

实现Typst技术报告式层级段落编号

在Typst中,无需将内容设为标题,通过自定义枚举的编号规则结合计数器联动,就能实现你要的层级段落编号效果。

方案一:直接修改全局枚举样式

通过set enum定义编号规则,让嵌套层级的计数器联动生成点分隔的编号:

#set enum(numbering: (depth) => {
  let num_parts = []
  for level in range(1, depth + 1) {
    num_parts.push(counter("enum", level: level))
  }
  num_parts.join(".") + " "
})

// 示例输入
+ Paragraph 1
 + SubParagraph 1
  + Sub-SubParagraph 1
+ Paragraph 2
 + SubParagraph 2
  + Sub-Sub Paragraph 2

这段代码会遍历当前枚举的层级,依次获取对应层级的计数器值,用点连接后添加空格,完成编号与段落内容的分隔。

方案二:自定义专用枚举环境(可选)

如果需要统一调整缩进、间距等样式,可以封装一个专用的段落枚举环境:

#let tech-para(children) = {
  enum(
    children,
    numbering: (depth) => {
      let parts = [for l in 1..depth+1 counter("enum", level: l)]
      parts.join(".") + " "
    },
    indent: 1em,
    spacing: 0.5em
  )
}

// 使用方式
#tech-para[
  + Paragraph 1
   + SubParagraph 1
    + Sub-SubParagraph 1
  + Paragraph 2
   + SubParagraph 2
    + Sub-Sub Paragraph 2
]

效果验证

运行上述代码后,输出格式完全符合需求:

1 Paragraph 1
1.1 SubParagraph 1
1.1.1 Sub-SubParagraph 1
2 Paragraph 2
2.1 SubParagraph 2
2.1.1 Sub-Sub Paragraph 2

这种方式仅针对段落枚举生效,不会将内容识别为标题,避免了标题样式带来的额外格式干扰。

内容的提问来源于stack exchange,提问作者user20383837

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:17:05