s10e-present/präsi-test.typ
2025-02-16 22:50:01 +01:00

83 lines
1.7 KiB
Text

#let pgcounter = context [
real page: #here().page() / #counter(page).final().first()
];
#set page(
paper: "presentation-16-9",
fill: rgb("222"),
footer: align(center, pgcounter),
)
#set text(fill: white)
#let s_topic = state("topic", (color: red));
#let seite(n) = [#page(
background: context {
import "@preview/cetz:0.3.2"
let pages = query(selector(<seite>).before(query(selector(<seite>).after(here())).first().location()))
let last = counter(<seite>).final().first()
let size = 100 / last
[
#place(
bottom + left,
stack(dir: ltr, ..pages.map(pg => {
let seg_start = ((counter(<seite>).at(pg.location()).first() + 1) / last) * 100 - 50;
link(pg.location(), box(width: size * 1%, height: 0.5%))
}),)
)
#place(
bottom + left,
cetz.canvas(
length: 1%,
{
import cetz.draw: *
for pg in pages.rev() {
let seg_start = ((counter(<seite>).at(pg.location()).first() + 1) / last) * 100 - 50
rect((seg_start - size - 0.1, 0), (seg_start, 0.5), fill: s_topic.at(pg.location()).color, stroke: none)
}
},
),
)
]
},
)[#lorem(n * 20)
#align(bottom)[#text(size: 4em)[Slide #n]
]
] <seite>];
#let s = state("foo", "bar");
#for i in (1, 2, 3, 4) {
seite(i)
}
#s_topic.update((color: blue))
#for i in (5, 6, 7) {
seite(i)
}
#page[= miau 1]
#page[= miau 2]
#s_topic.update((color: green))
#for i in (8, 9) {
seite(i)
}
#page[= miau 3]
#s_topic.update((color: yellow))
#for i in (10, 11, 12) {
seite(i)
}
#text(context s.get())