diff options
| author | Eric Biedert <github@ericbiedert.de> | 2024-08-26 17:26:50 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-26 15:26:50 +0000 |
| commit | 326fd3380151551538d6f245f884d174551bdf0f (patch) | |
| tree | 4c7e221381bb08cbf01652a2997416aa07a727d3 | |
| parent | d926e8c17d756442048460ecf7ba7c867e6b6923 (diff) | |
Don't number empty regions of broken block equations (#4836)
| -rw-r--r-- | crates/typst/src/math/equation.rs | 9 | ||||
| -rw-r--r-- | tests/ref/issue-4829-math-pagebreaking-wrong-number.png | bin | 0 -> 394 bytes | |||
| -rw-r--r-- | tests/ref/math-equation-number-empty.png | bin | 0 -> 116 bytes | |||
| -rw-r--r-- | tests/suite/math/equation.typ | 4 | ||||
| -rw-r--r-- | tests/suite/math/multiline.typ | 12 |
5 files changed, 24 insertions, 1 deletions
diff --git a/crates/typst/src/math/equation.rs b/crates/typst/src/math/equation.rs index df7cc021..208540cd 100644 --- a/crates/typst/src/math/equation.rs +++ b/crates/typst/src/math/equation.rs @@ -332,8 +332,10 @@ fn layout_equation_block( .layout_into_run(elem, styles)? .multiline_frame_builder(&ctx, styles); let width = full_equation_builder.size.x; + let can_break = + BlockElem::breakable_in(styles) && full_equation_builder.frames.len() > 1; - let equation_builders = if BlockElem::breakable_in(styles) { + let equation_builders = if can_break { let mut rows = full_equation_builder.frames.into_iter().peekable(); let mut equation_builders = vec![]; let mut last_first_pos = Point::zero(); @@ -415,9 +417,14 @@ fn layout_equation_block( }; // Add equation numbers to each equation region. + let region_count = equation_builders.len(); let frames = equation_builders .into_iter() .map(|builder| { + if builder.frames.is_empty() && region_count > 1 { + // Don't number empty regions, but do number empty equations. + return builder.build(); + } add_equation_number( builder, number.clone(), diff --git a/tests/ref/issue-4829-math-pagebreaking-wrong-number.png b/tests/ref/issue-4829-math-pagebreaking-wrong-number.png Binary files differnew file mode 100644 index 00000000..1db8a511 --- /dev/null +++ b/tests/ref/issue-4829-math-pagebreaking-wrong-number.png diff --git a/tests/ref/math-equation-number-empty.png b/tests/ref/math-equation-number-empty.png Binary files differnew file mode 100644 index 00000000..9311f114 --- /dev/null +++ b/tests/ref/math-equation-number-empty.png diff --git a/tests/suite/math/equation.typ b/tests/suite/math/equation.typ index 2345de54..6cdf7b7e 100644 --- a/tests/suite/math/equation.typ +++ b/tests/suite/math/equation.typ @@ -256,6 +256,10 @@ $ q &= sum_k ln A \ ], ) +--- math-equation-number-empty --- +// Test numbering on empty equations. +#math.equation(numbering: "1", block: true, []) + --- issue-4187-alignment-point-affects-row-height --- // In this bug, a row of "-" only should have a very small height; but // after adding an alignment point "&", the row gains a larger height. diff --git a/tests/suite/math/multiline.typ b/tests/suite/math/multiline.typ index 35f10ea4..b6d970f3 100644 --- a/tests/suite/math/multiline.typ +++ b/tests/suite/math/multiline.typ @@ -133,3 +133,15 @@ $ a &+ b + & c \ --- issue-1948-math-text-break --- // Test text with linebreaks in math. $ x := "a\nb\nc\nd\ne" $ + + +--- issue-4829-math-pagebreaking-wrong-number --- +// Test numbering of empty regions of broken equations. +#set page(height: 5em) +#set math.equation(numbering: "1") +#show math.equation: set block(breakable: true) + +#rect(height: 1.5em) + +$ a + b \ + a + b $ |
