打字机水平显示2张图像?

Mak*_*gan 6 math markup typesetting typst

我正在使用 typest 渲染一些东西,我想要并排显示 2 个图像,我弄清楚了如何垂直获取东西:

#figure(
  (image("eulerian.svg", width: 10%),
  image("lagrangian.svg", width: 10%)).join(),
  caption: [A curious figure.],
) <glacier>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我现在想知道如何使事情水平化。

小智 9

@honkbug 给出了一个很好的例子,但没有解释解决方案。因此,我想展示该文档以及不同参数会发生什么。

1. 使用grid

Typst 有一个功能grid,它允许我们安排内容。这是我们可以用来放置子图的函数。

最重要的参数gridcolumns这里:

指定轨道大小数组或提供整数以创建具有许多自动调整大小的列的网格。

有关更多详细信息,请参阅文档。

当我们只给出一个整数时,grid将创建自动调整大小的列并自动放置内容。假设我们有两个图像并希望将它们并排放置;我们可以通过这种简单的方式实现这一点:

// A function to represent a virtual image
#let vimg(body) = {
    rect(width: 10mm, height: 5mm)[
        #text(body)
    ]
}

#figure(
    grid(
        columns: 2,     // 2 means 2 auto-sized columns
        gutter: 2mm,    // space between columns
        vimg("1"),
        vimg("2"),
    ),
    caption: "some caption"
)
Run Code Online (Sandbox Code Playgroud)

我们得到这样的结果: 2 张图像并排

我们告诉 Typst 我们需要两个自动调整大小的列,它们之间的距离为 2 毫米。但是如果我们提供两个以上的图像怎么办?我们用 3 来测试一下:

#figure(
    grid(
        columns: 2,
        gutter: 2mm,
        vimg("1"),
        vimg("2"),
        vimg("3"),
    ),
    caption: "some caption"
)
Run Code Online (Sandbox Code Playgroud)

两列 3 张图像 由于我们仍然使用两列,Typst 将第三列放在第二行上。如果我们将 更改columns3,它们将位于同一行。

2. 使用stack

我们还可以使用以下方法stack来实现目标:

#figure(
    stack(
        dir: ltr,       // left-to-right
        spacing: 2mm,   // space between contents
        vimg("1"),
        vimg("2"),
    ),
    caption: "some caption"
)
Run Code Online (Sandbox Code Playgroud)

在这里,我们将图像放置在水平堆栈中,方向为“从左到右”。

两个图像并排放置在堆栈中

这样一来,columns图片的数量就不受限制,但只能是一行。因此,如果我们放置太多图像,它们可能会超出页面。