83 lines
1.7 KiB
Text
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())
|
|
|