diff --git a/src/core/renderer.typ b/src/core/renderer.typ index fde03d0..1bb3297 100644 --- a/src/core/renderer.typ +++ b/src/core/renderer.typ @@ -220,7 +220,7 @@ } /// Compute remaining widths for longer sequences (spanning multiple columns) -#let long-seq-min-col-widths(cells, widths) = { +#let long-seq-min-col-widths(participants, cells, widths) = { let widths = widths let multicol-cells = cells.filter(c => c.i2 - c.i1 > 1) multicol-cells = multicol-cells.sorted(key: c => { @@ -228,13 +228,23 @@ }) for cell in multicol-cells { let m = measure(cell.cell) + + let i1 = cell.i1 + let i2 = cell.i2 - 1 + let i = i2 + if cell.i1 == 0 and participants.at(0).name == "[" { + i = 0 + i1 += 1 + i2 += 1 + } let width = ( m.width / 1pt + COMMENT-PAD - - widths.slice(cell.i1, cell.i2 - 1).sum() + widths.slice(i1, i2).sum() ) - widths.at(cell.i2 - 1) = calc.max( - widths.at(cell.i2 - 1), width + + widths.at(i) = calc.max( + widths.at(i), width ) } return widths @@ -307,7 +317,7 @@ widths = notes-min-col-widths(elements, widths, pars-i) widths = simple-seq-min-col-widths(cells, widths) widths = self-seq-min-col-widths(cells, widths) - widths = long-seq-min-col-widths(cells, widths) + widths = long-seq-min-col-widths(participants, cells, widths) widths = col-widths-add-lifelines(participants, widths) widths = process-col-elements(elements, widths, pars-i) return widths diff --git a/tests/sequence/special-par/ref/1.png b/tests/sequence/special-par/ref/1.png index 1259a7e..cce43e8 100644 Binary files a/tests/sequence/special-par/ref/1.png and b/tests/sequence/special-par/ref/1.png differ