forked from HEL/chronos
		
	improved column layout
This commit is contained in:
		| @@ -1,7 +1,8 @@ | ||||
| #import "@preview/cetz:0.2.2": canvas, draw | ||||
|  | ||||
| #let X-SPACE = 2 | ||||
| #let Y-SPACE = 20 | ||||
| #let PAR-PAD = (5pt, 3pt) | ||||
| #let PAR-SPACE = 10 | ||||
|  | ||||
| #let get-participants-i(participants) = { | ||||
|   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) { | ||||
|     let m = measure(cell.cell) | ||||
|     widths.at(cell.i1) = calc.max( | ||||
| @@ -38,6 +47,18 @@ | ||||
|       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 | ||||
| } | ||||
|  | ||||
| @@ -58,7 +79,7 @@ | ||||
|       p.display-name, | ||||
|       name: p.name, | ||||
|       frame: "rect", | ||||
|       padding: (5pt, 3pt), | ||||
|       padding: PAR-PAD, | ||||
|       anchor: "south" | ||||
|     ) | ||||
|   } | ||||
| @@ -108,7 +129,7 @@ | ||||
|         p.display-name, | ||||
|         name: p.name, | ||||
|         frame: "rect", | ||||
|         padding: (5pt, 3pt), | ||||
|         padding: PAR-PAD, | ||||
|         anchor: "north" | ||||
|       ) | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user