获取打字机中的当前页边距

问题描述 投票:0回答:1

在打字中,我想编写代码,如果当前位置位于(或接近)左侧边距,则执行某些操作。

如何获取当前页边距的数字值?

例如,下面的代码使用默认的 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()]
}

margins typst
1个回答
0
投票

如果没有不稳定的黑客攻击,目前这是不可能的。您可以跟踪 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
状态会将您的页边距作为字典保存。

© www.soinside.com 2019 - 2024. All rights reserved.