Typst-counter

Typst 官方 counter 相关内容

介绍

Typst counter 可以在 pages (页眉页脚之类), elements (变量自增) 等进行计数操作, 其往往要配合 context 关键字使用.

获取 counter 值

get 函数, 其返回一个数组, 比如 heading 的 counter context 就有多个 level 存在, 数组中的每一个 item 就是 one level:

1
2
3
4
5
#set heading(numbering: "1.")

= Introduction
Raw value of heading counter is
#context counter(heading).get()

格式化显示 counter

display 函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
#set heading(numbering: "1.")

= Introduction
Some text here.

= Background
The current value is: #context {
counter(heading).display()
}

Or in roman numerals: #context {
counter(heading).display("I")
}
  • display() 不加参数时, 用 set 中指定的 numbering 来显示
  • display() 加参数可直接用指定 format

修改 counter 的值

stepupdate 函数:

  • step 不加参数可以让 counter 递增 1, 也可以用 level 指定 counter
  • 可以直接修改 counter 计数的值:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #set heading(numbering: "1.")

    = Introduction
    #counter(heading).step()

    = Background
    #counter(heading).update(3)
    #counter(heading).update(n => n * 2)

    = Analysis
    Let's skip 7.1.
    #counter(heading).step(level: 2)

    == Analysis
    Still at #context {
    counter(heading).display()
    }

自定义 counter

除了 headingpage 等在 context 中有隐式 counter 外, 还可以自定义 counter 来使用, 直接用 counter 就行:

1
2
3
4
5
6
#let mine = counter("mycounter")
#context mine.display() \
#mine.step()
#context mine.display() \
#mine.update(c => c * 3)
#context mine.display()

可以通过函数来修饰计数器的输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#let p = counter("mypage")
#let pagenum() = block[
#p.step()
Page #context p.display()
]

#set page(
footer: context [
#set align(center)
#pagenum()
]
)

#pagebreak()

#pagebreak()

提前获取 counter 值

即在 counter 到达文档中的某个位置之前, 提起获取其值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#let mine = counter("mycounter")

= Values
#context [
Value here: #mine.get() \
At intro: #mine.at(<intro>) \
Final value: #mine.final()
]

#mine.update(n => n + 3)

= Introduction <intro>
#lorem(10)

#mine.step()
#mine.step()

Typst-counter
http://example.com/2024/10/29/Typst-counter/
作者
Jie
发布于
2024年10月29日
许可协议