如何在Typst中实现LaTeX booktabs表格样式?
在Typst中实现LaTeX booktabs表格样式
一、现成的Typst booktabs包
Typst社区有现成的booktabs包可直接复刻LaTeX booktabs的样式,包含预设的粗细线条、合理行间距等特性。使用方式如下:
- 通过Typst包管理器安装该包(Web编辑器或本地编辑器启用包支持后添加依赖)
- 导入包后使用
booktabs-table函数创建表格,示例代码:
#import "@preview/booktabs:0.1.0": booktabs-table #booktabs-table( columns: 3, align: (left, center, center), header: ([Substance], [Subcritical \ °C], [Supercritical \ °C]), rows: ( ([Hydrochloric Acid], [12.0], [92.1]), ([Sodium Myreth Sulfate], [16.6], [104]), ([Potassium Hydroxide], table.cell(colspan: 2)[24.7]), ) )
二、手动优化行间距的方案
如果不想依赖第三方包,针对你现有的代码,可从以下几点优化行间距:
- 合理设置
row-gutter:避免使用负值(易导致内容重叠),建议设置0.2em-0.4em的正值,配合单元格内行距调整 - 单独控制单元格内行距:通过
show table.cell: set par(leading: ...)精准控制单元格内的段落行距,而非全局设置par - 表头样式适配:可单独给表头设置内边距或行距,强化层级感
优化后的手动实现代码示例:
#show table: set align(center) #show table.cell: set par(leading: 1.1em) // 控制单元格内文本行距 #set table(row-gutter: 0.3em) // 设置行与行之间的间距 #table( columns: 3, align: (left, center, center), stroke: none, table.hline(stroke: 0.08em), table.header( [Substance], [Subcritical \ °C], [Supercritical \ °C], ), table.hline(stroke: 0.05em), [Hydrochloric Acid], [12.0], [92.1], [Sodium Myreth Sulfate], [16.6], [104], [Potassium Hydroxide], table.cell(colspan: 2)[24.7], table.hline(stroke: 0.08em), )
若使用stroke函数定义线条样式,只需在set table中同时指定row-gutter即可:
#show table.cell: set par(leading: 1.1em) #set table( row-gutter: 0.3em, stroke: (x, y) => if y == 0 { (bottom: 0.05em + black, top: 0.08em) } else if y == 3 { (bottom: 0.08em) } ) #table( columns: 3, align: (left, center, center), table.header( [Substance], [Subcritical \ °C], [Supercritical \ °C], ), [Hydrochloric Acid], [12.0], [92.1], [Sodium Myreth Sulfate], [16.6], [104], [Potassium Hydroxide], table.cell(colspan: 2)[24.7], )
内容的提问来源于stack exchange,提问作者dufei
相关产品推荐
相关产品推荐

