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

如何让Typst网格单元格填充行高并支持跨页显示?

Typst Grid布局行高填充与跨页显示解决方案

一、让行内盒子填充整行高度

要实现同一行内的盒子填满整行高度,需从两个维度调整:

  1. 设置Grid单元格垂直拉伸:给同一行的grid.cell添加vertical-align: stretch属性,让单元格自动匹配行内最高元素的高度。
  2. 让盒子填满单元格高度:将盒子的height设为100%,确保内容不足时也能撑满单元格空间。

修改后的完整代码:

#let colbox(content) = {
  frame(
    fill: rgb("#0097cf12"),
    inset: 10pt,
    width: 100%,
    height: 100%, // 填满单元格高度
    radius: 5pt,
    breakable: true,
  )[
    #content
  ]
}

#grid(
  columns: (1fr, 1fr),
  gutter: 10pt,
  
  grid.cell(colspan: 2)[
    #colbox([
      = Header 1
      #lorem(50)
    ])
  ],
  
  // 第二行左侧单元格,开启垂直拉伸
  grid.cell(vertical-align: stretch)[
    #colbox([
     = Header 2A
     - #lorem(100)
     - #lorem(10)
     - #lorem(10)
    ])
  ],
  
  // 第二行右侧单元格,开启垂直拉伸
  grid.cell(vertical-align: stretch)[
    #colbox([ 
      = Header 2B
      - #lorem(10)
      - #lorem(10)
      - #lorem(10)
    ])
  ],
  
  grid.cell(colspan: 2)[
   #colbox([
      = Header 3
      - #lorem(10)
      - #lorem(10)
      - #lorem(10)
    ])
  ],
)

二、让盒子支持跨页显示

Typst的box是不可分割的容器,无法跨页展示长内容。要实现大量内容自动跨页,需将box替换为frame,并开启breakable: true属性——frame支持自动断页,同时能保留原有的填充、圆角等样式。

关键修改说明:

  • 替换box为frame
  • 添加breakable: true允许内容跨页
  • 保留fill、inset、radius等原有样式设置

使用上述修改后的colbox定义,当内容为#lorem(1000)这类长文本时,会自动在页面边界处断页,剩余内容继续在下一页展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 03:22:23