Typst-context
简介
Context 即上下文, Typst 中的一些行为需要用上下文信息来计算出当前需要的结果, 比如 header numberings, 你需要计算前面出现了多少个 header, 才能得到当前的 numbering.
show
规则, set
规则和 numbering
其实都会隐示创建上下文, 而这个上下文信息可以用 context
关键词来获取. 比如:
1 |
|
设置了文档的语言, 而这个信息就可以用 context
关键字来读取:
1 |
|
获取位置信息
可以利用 context
得到当前位于文档中的位置 (绝对位置), 或者相对某个元素的位置.
下面是一个利用 heading 获取当前位置的示例, 可以用 counter.get
获取当前位置的 counter 信息, 其返回一个数组 (毕竟当前位置可能有多个 counter 在起作用, 以下面的例子而言, 一级标题维护一个 counter, 一级标题下的二级标题也维护一个 counter):
1 |
|
(1,1)
就知道当前位置是第一个一级标题下的第一个二级标题处
获取当前页, 行, 列信息
利用 here()
函数:
1 |
|
获取指定位置的页, 行, 列信息
利用 locate()
函数:
1 |
|
获取指定内容的 context 信息
利用 counter.at
:
1 |
|
here()
指定当前位置,counter.at(here())
和counter.get()
等价at(<intro>)
利用 label 来指定要获取谁的 context 信息
context 嵌套
1 |
|
在 set
之后, 当前 context 信息已经计算出了.
这里第一个 context
块, 使用的是该块之外已经计算出的结果, 因此在第二个 set
之后, #text.lang
的值仍然没有改变.
Typst-context
http://example.com/2024/10/29/Typst-context/