Typst:通过网格功能自动适应列宽

问题描述 投票:0回答:1

我有三个 3:2 格式的人物,其中两个是横向模式,一个是纵向模式。我想将它们排列在同一页上,两个水平图在左边,垂直图在右边。这是我使用网格函数非常简单地获得的结果。

#set align(center + horizon)

#set page(
  width: 12.625in,
  height: 10.875in,
  margin: (x: 1in, y: 1in)
)

#grid(
  rows: (auto),
  columns: (auto, auto),
  gutter: 0.2in,

  grid(
    rows: (auto, auto),
    columns: auto,
    gutter: 0.2in,
  image("recth.jpg"),
  image("recth.jpg"),
  ),
  image("rectv.jpg"),
)

结果并不完全令人满意,因为我希望图形的顶部和底部边缘对齐。我可以通过手动调整网格函数中两列的相对宽度来做到这一点。

#grid(
  rows: (auto),
  columns: (1fr, 0.913fr),
  gutter: 0.2in,

  grid(
    rows: (auto, auto),
    columns: (auto),
    gutter: 0.2in,
  image("recth.jpg"),
  image("recth.jpg"),
  ),
  image("rectv.jpg"),
)

我的问题是:有没有办法自动实现这个结果(通过让typst自动找到合适的相对宽度)?

非常感谢社区提供这个精彩的项目。

grid typst
1个回答
0
投票

您可以使每个肖像尺寸相同,确保它们为装订线留出空间,然后将它们与网格单元的顶部和底部对齐。

将其输入打字机,我们得到:

#let image-grid-2(grid-height, gutter) = {
  let landscape-height = (grid-height - gutter) / 2
  grid(columns: 2, rows: grid-height, gutter: gutter)[
    #align(top, image("landscape.png", height: landscape-height))
    #align(bottom, image("landscape.png", height: landscape-height))
  ][
    #image("portrait.png", height: 100%)
  ]
}

#image-grid-2(3in, 0.1in)

© www.soinside.com 2019 - 2024. All rights reserved.