Я использую typst для рендеринга некоторых вещей, я хочу, чтобы рядом отображались 2 изображения, которые я понял, как получить вещи по вертикали:
#figure(
(image("eulerian.svg", width: 10%),
image("lagrangian.svg", width: 10%)).join(),
caption: [A curious figure.],
) <glacier>
Мне интересно, как получить вещи горизонтально сейчас.
#figure(
grid(
columns: (auto, auto),
rows: (auto, auto),
gutter: 1em,
[ #image("eulerian.svg", width: 80%) ],
[ #image("lagrangian.svg", width: 80%) ],
),
caption: [A curious figure.]
) <glacier>
@honkbug дает хороший пример, но без объяснения решения. Таким образом я хочу показать документ и что происходит с разными параметрами.
grid
В Typst есть функция grid
, которая позволяет упорядочивать содержимое. И это функция, которую мы можем использовать для размещения субфигур.
Самый важный параметр grid
здесь columns
:
столбцы
Либо укажите массив размера дорожки, либо укажите целое число, чтобы создать сетку с таким количеством столбцов с автоматическим размером.
Когда мы даем только одно целое число, 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"
)
И получаем в результате:
Мы говорим Typst, что нам нужны две колонки автоматического размера с 2 мм между ними. Но что, если мы предоставим более двух изображений? Давайте проверим с 3:
#figure(
grid(
columns: 2,
gutter: 2mm,
vimg("1"),
vimg("2"),
vimg("3"),
),
caption: "some caption"
)
Поскольку мы по-прежнему используем два столбца, Typst поместил третий во вторую строку. И если мы изменим columns
на 3
, они будут в одном ряду.
stack
Мы также можем использовать stack
для достижения цели:
#figure(
stack(
dir: ltr, // left-to-right
spacing: 2mm, // space between contents
vimg("1"),
vimg("2"),
),
caption: "some caption"
)
Здесь мы помещаем изображения в горизонтальную стопку с направлением «слева направо».
Таким образом, нет columns
ограничения количества изображений, но у нас может быть только одна строка. Таким образом, если мы разместим слишком много изображений, они могут оказаться за пределами страницы.
Пожалуйста, отредактируйте свой ответ и добавьте объяснение к решению, чтобы будущие читатели поняли его.