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

如何在Typst中获取内容与布局的length类型宽高值?

在Typst中获取length类型的内容与布局宽度

核心问题在于你混淆了用于计算的length值和用于显示的content渲染结果。以下是具体解决方法:

1. 正确获取布局宽度(length类型)

layout()函数的回调参数size.width本身就是length类型,但需要在context块内赋值,才能让变量存储length而非content:

#let page-width = context {
  layout(size => size.width)
}

// 直接用这个值做计算(合法,因为page-width是length)
#rect(width: page-width - 30pt, height: 40pt, fill: lightgray)

2. 正确获取文本内容的宽度(length类型)

measure().width同样是length类型,只需确保在context环境中使用,变量就会存储length值,而非渲染后的content:

#let get-text-width(content) = context {
  measure(content).width
}

#let hello-width = get-text-width[Hello World]
// 用该值做计算,比如设置另一个元素的宽度
#text(width: hello-width + 15pt, size: 18pt, "This box is wider than Hello World")

误区说明

当你直接输出page-width或hello-width时,Typst会自动将length值渲染为带单位的文本(比如453.54pt),此时它是content类型,但变量本身存储的仍是length——你不需要用str()转字符串再eval(),直接在计算逻辑中使用变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:12:11