template-thesis-matisse/lib/todos.typ
Jean-Marie Mineau 1b5d007289
wip
2025-06-12 11:51:21 +02:00

33 lines
961 B
Typst

#let todo-list = state("todo-list",())
#let show-todos = state("show-todos", true)
#let todo(color: red, content) = context {
if show-todos.get() {
let todonum = todo-list.get().len() + 1
box(
text(font: "DejaVu Sans Mono", white, size: .5em)[
TODO #todonum #label("todo-"+str(todonum))
],
inset: 3pt, fill: color,
)
text(weight: "bold", fill: color)[
#box(text($triangle.filled.r$, size: .8em), baseline: -.8mm)
_ #content _
#box(text($triangle.filled.l$, size: .8em), baseline: -.8mm)
]
todo-list.update(x => x + (("todo-"+str(x.len()+1),x.len()+1, content),))
}
}
#let todos() = context {
if (todo-list.final().len() != 0) and (show-todos.get()) {
pagebreak(weak: true)
text(size: 2em, weight: "bold", fill:red)[TO-DOs]
for t in todo-list.final() {
let l = label(t.first())
list.item(link(l)[TODO #t.at(1) p.#locate(l).page() : #t.last()])
}
}
}