From 8eee3ec8d1b4d960017cb558887bd6180cc99cea Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 1 Oct 2024 08:01:28 +0000 Subject: [PATCH] Fix breakable block equation overflow (#5078) --- crates/typst/src/math/equation.rs | 4 +--- .../math-pagebreaking-single-line-numbered.png | Bin 0 -> 760 bytes tests/ref/math-pagebreaking-single-line.png | Bin 0 -> 674 bytes tests/suite/math/multiline.typ | 17 +++++++++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 tests/ref/math-pagebreaking-single-line-numbered.png create mode 100644 tests/ref/math-pagebreaking-single-line.png diff --git a/crates/typst/src/math/equation.rs b/crates/typst/src/math/equation.rs index bf5ef9dd4..dfcb0f7b7 100644 --- a/crates/typst/src/math/equation.rs +++ b/crates/typst/src/math/equation.rs @@ -322,10 +322,8 @@ fn layout_equation_block( .layout_into_run(&elem.body, 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 can_break { + let equation_builders = if BlockElem::breakable_in(styles) { let mut rows = full_equation_builder.frames.into_iter().peekable(); let mut equation_builders = vec![]; let mut last_first_pos = Point::zero(); diff --git a/tests/ref/math-pagebreaking-single-line-numbered.png b/tests/ref/math-pagebreaking-single-line-numbered.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5b93eb192077fa88aeeaf43e56dbb9bf2c5ed2 GIT binary patch literal 760 zcmVT==qG`@^#gRn}O4QM1R z>6&o<$%36icWt?_eoGl>{leY)(L9SDu6H3dcn;20os_=16nLqD&aJTqAoj&mbJP`6 zqBN6`RNU*Tx&CRx>seT*jL|i@lte1)ofuBe!mU1} zN;p-U4+1!k0C^IRq>v2mn;>aw#pV3X+E^Kom!So04B%I69%1DmSxy6_R zj`W_Ig);)tNF12NaUPbd`0S2nRWj%EyL-9Zf(0Jk4vvHRvv1BcCId@`{l^KY%kw8b zrgP6&r7!!2%Jxpl(;D`gBmCGs!bX6jJw_;UH9t?JcAJ4GcQN2v%k*Zd-PoZwIl-~G zN{4qj?H>b(6q{^EG9r?Lzv1BLje^ zU9joQP>|XR_RiIZVmo(!!|ry$>M%UI0F^@FtWe|u&Qy3{JFj`z%Pv@6!a<$Yi_a18 z4%=OxhcDR$H^!!%)mXuC84)Z}qyf~s=1y-b*p6~pO5fALQgi+)50K1Z0A^mX$}k-O q{4k0oAz%RuSik}nuz&@;y8Qy^V7JL9iVf8O0000t~4o literal 0 HcmV?d00001 diff --git a/tests/ref/math-pagebreaking-single-line.png b/tests/ref/math-pagebreaking-single-line.png new file mode 100644 index 0000000000000000000000000000000000000000..877d9c8b66292d129f65fed13fc9d1105f4c90b1 GIT binary patch literal 674 zcmV;T0$u%yP)yDjtT;`E7I&3=GVR*U0C4_gsB=`2F|=u|)+5Sil1Q?_hgxz|;F- z1ZZ~xz~Cr<%-Z7EEWE5UoL-YN0^!7JK%)ZyM>eyotXttw{>9D0ugrX&w`CHLt_HBk z0N@-z{eyLj#Cd76uxoD{*iv&7rm#FKoOMJ|nS~#&Ge*c?qZ+T6fYE)$ZlL(ZQ(wUa zZ>hXyD6>w+SgwBD`O*(Nbw$pBsP_EpNcu7BhGF`SpYqzytUP`*be7h54&jdQ!-L6G z%7k|L!U5ECK)uW(c`gLwl0mZWAi?ZGg&#i3{BCYF4TWOx{sp`YakVxL~kI5FXY<{01eQhN5gd2$CgF+HsAp(}xdE^jED)OQ9? zG4gK1uuU?yQgCl6Cwrw^SF%Wl)O^>W$@Q5v)pF;J#`a`8P^*~*8Xg*fQt;$xyS}A8 zz?RZoaoatSryqvaVaj0qy|`Qg7O;Q?EMNf(Sil0_KJZp0W-MR<3wV3N_F$!9699Zq zR0dwC>751uEdW$yHF*?(z0ot7rU3X_o$I~=uqlV6F~F$RsvIx4KSTE&&TzzycPqfCVgI0sm9*Pxh?HM#BJ~)c^nh07*qo IM6N<$f*UMBKL7v# literal 0 HcmV?d00001 diff --git a/tests/suite/math/multiline.typ b/tests/suite/math/multiline.typ index 8377b93e6..3c0ed2f49 100644 --- a/tests/suite/math/multiline.typ +++ b/tests/suite/math/multiline.typ @@ -130,6 +130,23 @@ $ a &+ b + & c \ & & c && + d \ &= 0 $ +--- math-pagebreaking-single-line --- +// Test breaking of single line equations. +#set page(height: 4em) +#show math.equation: set block(breakable: true) + +Shouldn't overflow: +$ a + b $ + +--- math-pagebreaking-single-line-numbered --- +// Test breaking of single line equations with numbering. +#set page(height: 4em) +#show math.equation: set block(breakable: true) +#set math.equation(numbering: "(1)") + +Shouldn't overflow: +$ a + b $ + --- issue-1948-math-text-break --- // Test text with linebreaks in math. $ x := "a\nb\nc\nd\ne" $