Skip to content

如何绘制带斜线(对角线)的表格?

如何绘制带斜线(对角线)的表格?

理想情况下,斜线单元格的尺寸需要随其它单元格变化,目前没有内置支持;不过有几种纸糊的方法。

利用 metadata 测量单元格尺寸

typst
#table(
  columns: 2,
  table.cell(inset: 0pt, {
    place(top + left, metadata("__th"))
    place(bottom + right, metadata("__th"))
    context {
      let (p1, p2) = query(metadata.where(value: "__th")).slice(-2).map(e => e.location().position())
      let dx = p2.at("x") - p1.at("x")
      let dy = p2.at("y") - p1.at("y")
      line(
        end: (dx, dy),
      )
    }
  }),
  [111\ 1],
  [22222], [3],
)
Typst compiled image

具体原理请参考 bluss 的论坛帖子

手动指定斜线单元格的内容(diagbox)

未发布到 Typst Universe 的第三方包 diagbox 实现了这个功能。只需要下载代码到项目目录,然后引入其中的 tdiagboxbdiagbox 即可使用。

例如:

typst
#import "diagbox.typ": *

#table(
  columns: (auto, auto, auto),
  align: horizon + center,
  bdiagbox[Names][Properties], [*Can Walk*], [*Can Run*],
  [*Character A*], [Yes], [No],
  [*Character B*], [No], [No],
)

注意 bdiagbox 中的内容必须足够大,以 "撑开" diagbox,不然斜线会偏离对角。如果内容实在不够长,可以适当填充 #h

What do you think?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.5.1

基于 MIT 许可发布