Yes, for all intents and purposes a pagebreak
is an element. I think you can find more elements than you can find non-elements. What I mean by element
is the compiler definition of one. See How can I enumerate every element function in Typst?. It doesn’t mean the show rule will go well (e.g., with cite).
For more details, see the page.rs code
Below is “unexpected”, but perfectly acceptable Typst code.
#show math.overbrace: it => {
it.annotation
}
$overbrace(1 + 1, "sum")$
For bibliography show rules, it’s very difficult… This is because the bibliography is not very flexible atm. Any reference to a label is first checked against the bibliography, and turned into a citation, but with no referring element.
#show cite: it => { // Do not do this
ref(it.key) // it's a trap! (infinite loop)
}
#show ref: it => {
// how to detect if the ref is to a bibliography item?
// it.element == none?
// not very satisfying!
}