#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 n°#t.at(1) p.#locate(l).page() : #t.last()]) } } }