improved column layout

This commit is contained in:
Louis Heredero 2024-06-18 14:11:03 +02:00
parent 974eb92159
commit c7fba373a5
Signed by: HEL
GPG Key ID: 8D83DE470F8544E7
3 changed files with 31 additions and 4 deletions

Binary file not shown.

View File

@ -23,3 +23,9 @@ Alice <-- Bob: Another authentication Response
_seq("Bob", "Alice", comment: "bonjour", color: red) _seq("Bob", "Alice", comment: "bonjour", color: red)
_seq("Alice", "Bob", comment: "ok", color: blue) _seq("Alice", "Bob", comment: "ok", color: blue)
}) })
#chronos.diagram({
import "/src/diagram.typ": *
_seq("Alice", "Bob", comment: "This is a test")
_seq("Alice", "Callum", comment: "This is another test with a long text")
})

View File

@ -1,7 +1,8 @@
#import "@preview/cetz:0.2.2": canvas, draw #import "@preview/cetz:0.2.2": canvas, draw
#let X-SPACE = 2
#let Y-SPACE = 20 #let Y-SPACE = 20
#let PAR-PAD = (5pt, 3pt)
#let PAR-SPACE = 10
#let get-participants-i(participants) = { #let get-participants-i(participants) = {
let pars-i = (:) let pars-i = (:)
@ -30,7 +31,15 @@
} }
} }
let widths = participants.slice(0, -1).map(_ => 0) let widths = ()
for i in range(participants.len() - 1) {
let p1 = participants.at(i)
let p2 = participants.at(i + 1)
let w1 = measure(box(p1.display-name)).width + PAR-PAD.last() * 2
let w2 = measure(box(p2.display-name)).width + PAR-PAD.last() * 2
widths.push(w1 / 2pt + w2 / 2pt + PAR-SPACE)
}
for cell in cells.filter(c => c.i2 - c.i1 == 1) { for cell in cells.filter(c => c.i2 - c.i1 == 1) {
let m = measure(cell.cell) let m = measure(cell.cell)
widths.at(cell.i1) = calc.max( widths.at(cell.i1) = calc.max(
@ -38,6 +47,18 @@
m.width / 1pt m.width / 1pt
) )
} }
let multicol-cells = cells.filter(c => c.i2 - c.i1 > 1)
multicol-cells = multicol-cells.sorted(key: c => {
c.i1 * 1000 + c.i2
})
for cell in multicol-cells {
let m = measure(cell.cell)
widths.at(cell.i2 - 1) = calc.max(
widths.at(cell.i2 - 1),
m.width / 1pt - widths.slice(0, cell.i2 - 1).sum()
)
}
return widths return widths
} }
@ -58,7 +79,7 @@
p.display-name, p.display-name,
name: p.name, name: p.name,
frame: "rect", frame: "rect",
padding: (5pt, 3pt), padding: PAR-PAD,
anchor: "south" anchor: "south"
) )
} }
@ -108,7 +129,7 @@
p.display-name, p.display-name,
name: p.name, name: p.name,
frame: "rect", frame: "rect",
padding: (5pt, 3pt), padding: PAR-PAD,
anchor: "north" anchor: "north"
) )
} }