my first post here, apologize ahead if anything is improper..
reading the docs, functions like (* for under or over) *line *brace *bracket *paren *shell are already grouped into “under/over”. i suspect these a bit over-enumerated, why not generalize them into over(delim:brace,content,annotation) under(delim:#none,content,annotation), like mat, cases?
more aggressively, it will actually work without the delim being keyword argument, over(brace,content,annotation), just i agree it’s getting a bit inconsistent.
btw, i think *line could have some annotation too, and over with no delimiter (like, html <ruby>, pronunciation annotations in CJK, latex amsmath \overset/\underset) are also commonly used, both exactly covered by this generalization. just a little problem delim:what we should use for *line.
maybe, keep *line *brace separate, and use over() under() for other delimiters (default #none) generally? idea came from my discussions here, it seems like the ones later than *bracket are added in new versions of typst. hmm yes, i mean i think the addition of these functions look a bit … rough? to me…