From c7fba373a5b402391db9f10c5cea76af52d8cfbc Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 18 Jun 2024 14:11:03 +0200 Subject: [PATCH] improved column layout --- gallery/example1.pdf | Bin 15198 -> 16907 bytes gallery/example1.typ | 6 ++++++ src/renderer.typ | 29 +++++++++++++++++++++++++---- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/gallery/example1.pdf b/gallery/example1.pdf index 960c8ae72248fa8297ef4ccbb6db67290d034786..63f94d3e8cd1659ab5f7836dad9acb0056260c8e 100644 GIT binary patch delta 12263 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ᡋ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 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" ) }