refactored groups to use CeTZ style + fixed spacing

This commit is contained in:
2025-07-19 12:05:26 +02:00
parent 754cddd328
commit d6aeb33fa5
3 changed files with 115 additions and 53 deletions

View File

@ -1,23 +1,25 @@
#import "core/draw/group.typ"
#let _grp(name, desc: none, type: "default", elmts) = {
#let _grp(name, desc: none, type: "default", elmts, ..style) = {
return ((
type: "grp",
draw: group.render-start,
name: name,
desc: desc,
grp-type: type,
elmts: elmts
elmts: elmts,
style: style.named()
),)
}
#let _alt(desc, elmts, ..args) = {
#let _alt(desc, elmts, ..elses-style) = {
let all-elmts = ()
all-elmts += elmts
let args = args.pos()
for i in range(0, args.len(), step: 2) {
let else-desc = args.at(i)
let else-elmts = args.at(i + 1, default: ())
let elses = elses-style.pos()
let style = elses-style.named()
for i in range(0, elses.len(), step: 2) {
let else-desc = elses.at(i)
let else-elmts = elses.at(i + 1, default: ())
all-elmts.push((
type: "else",
draw: group.render-else,
@ -26,10 +28,10 @@
all-elmts += else-elmts
}
return _grp("alt", desc: desc, type: "alt", all-elmts)
return _grp("alt", desc: desc, type: "alt", all-elmts, ..style)
}
#let _loop(desc, min: none, max: auto, elmts) = {
#let _loop(desc, min: none, max: auto, elmts, ..style) = {
let name = "loop"
if min != none {
if max == auto {
@ -37,7 +39,7 @@
}
name += "(" + str(min) + "," + str(max) + ")"
}
_grp(name, desc: desc, type: "loop", elmts)
_grp(name, desc: desc, type: "loop", elmts, ..style)
}
#let _opt(desc, elmts) = grp("opt", desc: desc, type: "opt", elmts)
#let _break(desc, elmts) = grp("break", desc: desc, type: "break", elmts)
#let _opt(desc, elmts, ..style) = _grp("opt", desc: desc, type: "opt", elmts, ..style.named())
#let _break(desc, elmts, ..style) = _grp("break", desc: desc, type: "break", elmts, ..style.named())