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

如何限制Typst中outline.entry的文本长度?

解决Typst目录(Outline)长标题的换行/截断问题

方法1:强制标题文本换行(限制宽度)

通过解构outline.entry的元组结构,直接对标题文本设置宽度限制,实现自动换行:

show outline.entry: entry => {
  let (number, title, leader, page) = entry
  // 根据需求调整宽度值,这里设为15cm
  let wrapped_title = box(title, width: 15cm)
  (number, wrapped_title, leader, page)
}

方法2:截断过长标题并添加省略号

若不需要换行,直接截断超出长度的标题文本:

show outline.entry: entry => {
  let (number, title, leader, page) = entry
  let title_str = str(title)
  // 设定最大字符数,这里示例为30
  let truncated_title = title_str.len() > 30 
    ? text(title_str[0..30] + "...") 
    : title
  (number, truncated_title, leader, page)
}

方法3:换行+截断混合方案

优先让标题换行,超出指定高度后自动截断并添加省略号:

show outline.entry: entry => {
  let (number, title, leader, page) = entry
  let wrapped_title = box(
    title,
    width: 15cm,
    height: 2em, // 限制最大高度(约两行)
    overflow: "hidden",
    fill: text("...", align: right)
  )
  (number, wrapped_title, leader, page)
}

关键说明

Typst的outline.entry本质是包含章节编号、标题文本、引导线、页码的四元素元组。之前你使用show outline.entry: set box(...)只能修改元组后续元素,通过解构元组可以直接访问并修改标题部分,实现你需要的排版效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:12:15