在打字中,我想编写代码,如果当前位置位于(或接近)左侧边距,则执行某些操作。
如何获取当前页边距的数字值?
例如,下面的代码使用默认的 25 毫米边距实现了我想要的效果,但我希望它能够使用任意页边距。所以我想将硬编码的 25 更改为一个函数,该函数返回当前的左边距值(以毫米为单位)作为数字。
#let lr() = locate(l=>if l.position().x.mm()<=25 [*left* ] else [_right_ ])
#let n = 0
#while n < 100 {
n = n+1
[#lr()]
}
如果没有不稳定的黑客攻击,目前这是不可能的。您可以跟踪 https://github.com/typst/typst/issues/763 的状态,了解该语言何时支持。
同时,如果您确实需要保证金值,可以使用以下方法:
#let bg-state = state("background-size", (width: 0pt, height: 0pt))
#let margins = state("margin-state", (:))
#let background-sizer = {
layout(size => {
bg-state.update(size)
})
}
#set page(background: background-sizer, margin: (left: 100pt, right: 150pt))
// This has to be outside all containers (i.e. at the page level) work properly
#locate(loc => {
let page-size = bg-state.at(loc)
layout(size => {
let left-margin = loc.position().x
let right-margin = page-size.width - left-margin - size.width
margins.update(old => (left: left-margin, right: right-margin))
})
})
#lorem(25)
#margins.display()
margin
状态会将您的页边距作为字典保存。