typst/tests/typ/layout/stack-1.typ
2022-11-19 23:33:33 +01:00

53 lines
1.1 KiB
Typst

// Test stack layouts.
---
// Test stacks with different directions.
#let widths = (
30pt, 20pt, 40pt, 15pt,
30pt, 50%, 20pt, 100%,
)
#let shaded(i, w) = {
let v = (i + 1) * 10%
rect(width: w, height: 10pt, fill: rgb(v, v, v))
}
#let items = for i, w in widths {
(align(right, shaded(i, w)),)
}
#set page(width: 50pt, margin: 0pt)
#stack(dir: btt, ..items)
---
// Test spacing.
#set page(width: 50pt, margin: 0pt)
#let x = square(size: 10pt, fill: eastern)
#stack(
spacing: 5pt,
stack(dir: rtl, spacing: 5pt, x, x, x),
stack(dir: ltr, x, 20%, x, 20%, x),
stack(dir: ltr, spacing: 5pt, x, x, 7pt, 3pt, x),
)
---
// Test overflow.
#set page(width: 50pt, height: 30pt, margin: 0pt)
#box(stack(
rect(width: 40pt, height: 20pt, fill: conifer),
rect(width: 30pt, height: 13pt, fill: forest),
))
---
// Test aligning things in RTL stack with align function & fr units.
#set page(width: 50pt, margin: 5pt)
#set block(spacing: 5pt)
#set text(8pt)
#stack(dir: rtl, 1fr, [A], 1fr, [B], [C])
#stack(dir: rtl,
align(center, [A]),
align(left, [B]),
[C],
)