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

如何让Typst表格占满页面100%宽度?

如何让Typst表格占满页面宽度

核心解决思路:通过columns参数定义列宽实现撑满效果

Typst的table函数确实没有直接的width参数,但可以通过自定义列宽的方式让表格占满页面宽度,常用两种实现方式:

1. 用分数单位(fr)设置列宽比例

fr是相对比例单位,所有列的fr值总和会分配整个可用宽度,适合快速按比例分配列宽:

修改你的表格代码,将columns: 2替换为带宽度的数组即可:

#table(
  columns: (1fr, 3fr), // 第一列占1份,第二列占3份,总宽度自动撑满可用空间
  align: left,
  [Sentence Index], [Text],
  [1549], [A ++], 
  [362], [2000 Carr Futures], 
  [642], [Slope : 0.1171 ( 0.0022 )], 
  [1089], [Canon sx40 or canon s100 ?]
)

如果需要两列均分宽度,直接写columns: (1fr, 1fr)即可。

2. 结合页面宽度计算绝对列宽

如果需要更精准的宽度控制,可以基于page().width计算列宽,扣除表格的inset和gutter后分配:

#let total-available-width = page().width - 2*1.0em // 扣除左右各1em的inset
#table(
  columns: (total-available-width * 0.2, total-available-width * 0.8), // 第一列占20%,第二列占80%
  align: left,
  [Sentence Index], [Text],
  [1549], [A ++], 
  [362], [2000 Carr Futures], 
  [642], [Slope : 0.1171 ( 0.0022 )], 
  [1089], [Canon sx40 or canon s100 ?]
)

结合你的自定义表格规则

你的全局set table配置可以原样保留,只需要修改具体表格的columns参数。如果想让所有表格默认撑满宽度,也可以把列宽配置加到全局规则里:

// 全局自定义表格规则,默认两列均分宽度
set table(
  stroke: none,
  fill: (x, y) => if calc.even(y) == false { gray.transparentize(80%) },
  inset: (x: 1.0em, y: 0.5em),
  gutter: 0.2em, row-gutter: 0em, column-gutter: 0em,
  columns: (1fr, 1fr) // 全局设置列宽比例
)
show table.cell.where(y: 0) : set text(weight: "bold")

// 后续表格无需再指定columns,自动撑满宽度
#table(
  align: left,
  [Sentence Index], [Text],
  [1549], [A ++], 
  [362], [2000 Carr Futures], 
  [642], [Slope : 0.1171 ( 0.0022 )], 
  [1089], [Canon sx40 or canon s100 ?]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:22:34