From 7680893501a402fb218499b337f52151f8ad502d Mon Sep 17 00:00:00 2001 From: Malo <57839069+MDLC01@users.noreply.github.com> Date: Fri, 28 Feb 2025 23:53:55 +0100 Subject: [PATCH 1/4] Do not force `math.mid` elements to be Large --- crates/typst-layout/src/math/lr.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/typst-layout/src/math/lr.rs b/crates/typst-layout/src/math/lr.rs index bf8235411..5a95ba08f 100644 --- a/crates/typst-layout/src/math/lr.rs +++ b/crates/typst-layout/src/math/lr.rs @@ -58,7 +58,7 @@ pub fn layout_lr( if let MathFragment::Variant(ref mut variant) = fragment { if variant.mid_stretched == Some(false) { variant.mid_stretched = Some(true); - scale(ctx, styles, fragment, relative_to, height, Some(MathClass::Large)); + scale(ctx, styles, fragment, relative_to, height, None); } } } From 12f33697ceb314ccf197138aa01d19356f7a1ae1 Mon Sep 17 00:00:00 2001 From: Malo <57839069+MDLC01@users.noreply.github.com> Date: Fri, 28 Feb 2025 23:54:12 +0100 Subject: [PATCH 2/4] Update tests --- .../ref/math-lr-mid-size-nested-equation.png | Bin 900 -> 904 bytes tests/ref/math-lr-mid-size.png | Bin 2210 -> 2219 bytes tests/ref/math-lr-mid.png | Bin 1399 -> 1405 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/ref/math-lr-mid-size-nested-equation.png b/tests/ref/math-lr-mid-size-nested-equation.png index df0106689f081bd938addaf1acf938687152625f..d2da1694280a2d03cedf206eab27833c0f402292 100644 GIT binary patch literal 904 zcmV;319$w1P))J&x;3q%V=MvF`<9V0CV97}=} zQwf*UOmRA`JVHhhwSjahxzfCf%zQX!rOrVwhanRp(!+l zrqI@lHt-2d?c5RSr`M5|bZr4l4b8A*(DY&?xDZks)Qm$$KQ$w(({e5YBD7m&(EuEq zATgg88pz1MICpiL$6GO)$(~F~0;JU*204B416HRw*ND;TLdayqKw5Y5A*cIUYo{gW z%A>jUL!hAtIxscC(%Du3g_UcfxwXimnYKZonZtUpWtsunb|U~J1+Z`6;7n5 z!P72+<~qUC9{ZE&3J|9qYoXhF^chc6`O?ja1lKPwDhxWu(>$}uh|u2b?dEBIY1U|Z zThOx8QhAy;J;tP?AWhR`$J4eo3ejpK$;=h_R`Rsn^tjhYjApu222$zZ^D8`UPdRAm zDzJ5tKO22DyNjcZ*yzcgp8#8EJ()b?)qIXNYoi0nStmmCD5X0Wp^ow9XnLCwfR>!V z-YK1a06=1ndNW5W-$S>ZTR4KVcKG771>-PdX96nhOGcC z`!3kpq5(9v0lTMIT8bB4FCCc7!Q|^Kpdgx~Wx9jrIs{=FX6ykh#h(Pyw>Ge}EKks; z9af%e+Wmv5+o@t{J}L;EYc)~8s9zlB!jAN_w2(x)eclkG!M+W&Wq_rHrGTc6SV6PI z()Kn${0gP9v_lnOu26YTgQGPNzOR{F%mTFejf-UUZjxx`O*3n!ZJ8ILVW1dHlR7dj zwqy)NI!Uz8`$6jrlui431Psl3Ph%n2)M0}VO=}S+J(5k+UYAFUD1&g{GIU_7rxRa9 zx9~M&(_*XS(H!)U(}{5j?*{G_f;1-+Kuf&|>y4j*ob;z4f%Y(ZC2b*~IRlnl>S3)9 zs(a0lUPscCYAH0_xNZEKhSHa2&?dsvu-bz59b~kmt$-vN`Z~eX+6}hqG3D)Dp(!+l erqC4HzwI}PS}O-NU&?;~00003sg0009^NklMqt)O4GkU-17QcK*}<-2X^W59j;x+singof~Wh{>Nr$Dov%S zG?k|Mi>mf|DCL07T>Gz7v5_NCN`}3n*N_rItPtys9^&;rF-@(~1p{1F-3@;mkP;4| zOrb$N5H6q~Wonggu@lwlT5@?kAk=j|#QT20)fL?Q)`@DV1OVL&A(U4i#M32ASJko= zDpZ5Zz^gJ1N*~4`ceETpu3;Lghv8~e#Ye#DWgwU`1|heIe2Tjxpc9asRzc8!zCbh9uj%N#TLQXpTI=D=v1HFnkjlD;$hJgbTc0PW-9 zA+T+szX7}6Gpe+0WQKjgHnhP)j-i7`KclkDY6oeX$%)EWPj~oSde|XWwdXeE8a!>V zCmqiQfU>LU-uaB`Yy{oJFevq}Fp|wmN?&YbR5kNJ>-B8rt1Lk!WFJ`3;LWNQm4Q}& zsBhA_vZMpisf=oE4w>IO!S-X54M2AuaIlO~Wo!b?rwx1+2G#+vMeP8R7Q9nbKW7et z=HEE!zG~dAL)RX^9=l4K+swVME|dZlE6ZW@3K~^ZA(3>y`N5eA>uN!h07X@{9JF7Y zXHZF2HMs%&XOQ<6-Ix#g8C3gjPd)?i-&dzUPgXtMO}8XQL^ZExx~jk|XR6UWGwe0e ziH;}JRyZc0>U0OKMYU>mD__NLUpcrHp5dtU$3RO;QmL{nfg06PEBKY(hfIzd(Y%w#tQjlf05ye|+=$~8bpg{C?vWrEFAsr`4>RGLatX(~-M a?fw802}+pvYLNT@00008KBqz diff --git a/tests/ref/math-lr-mid-size.png b/tests/ref/math-lr-mid-size.png index 12b4c0868d133a99f8973511888564a83dafb329..888a8f07c451cfc9ceaf40dcf158d42f05a35b8e 100644 GIT binary patch literal 2219 zcmV;c2vqlpP)|+ty1PkDW4q7VZ8qs{-TGK-np9V%zR=bBNZDA653n1l5pV^h7Qq+73L+w) zRe6sVLD=$;WeXHgSVW!$Za6>0{ul-W78CzZ39e+Ui?U zwA*`xi986tg0DhO=cAsU7L*{5wyqtFx-ayBs2Y#kau-0#ji;imtCdC5&jKUOqEV1t zG{DqrS^zk9nS*99(lq@mlWbZ~mbg0Mbw~xVZ?lV-5j3R~(WOk*{~!rcVv2GBHjh^-xykv87QRE=cu!D` zIEupEAJR03XkjF1Idht6np2o1+UQb+I12pZee27JagRIFD0D7+v|B<38r;Q4`bpT|0%Z0hD{q!nD z8=lq&q1Am7v`x9{^(^dU)28;`6gEMNmK7AO;#HW6J_WKmZvd5b!0bVicG^)~$374lT!goy zfFy5wUgT@Yk?(ljb;?)Y07Ucl3q2=cPYv~KRaQpRelD0h@tpBxJUO=yt z55`;^ij;-$r;Wr4FRN!dngX{t2QVj%=E7 zSsG2tu`{RPPALG4y-_P%#Y0RtqZdF+K7$syg{B#1cFCq?c%G+ee)}Y8mv??e(W+)a zg4T0(DNU>U739*?Uncm`v~{skwD#g7aTG0jgA^@hL)=f{kr>?G|kgnF0C%HAbLGTdo+Dqf|j3E;O|b+{`zk=O&?xR@CP+TTahS} zHhK!^UO>@u=YviA;Q~I?DT0==nL%S8xtZ%=J#9`4gEr+y(GtZu zd

c{v5P`6V}rvegg&#!v>hQ`G4YjddsvA^R1`VIao-I#BHc7cBE+NLtxkaMGGSkT`O;eZi!)moOf%mAwmdT0=BgNA4vT zUfRSv60~{kOd9GL7ttQVB;`?N%NDFD|+tn{Cr>x-Gk1*X}l1H)^t^yU|)TsO!B}MX}XVHLkZ6uL>0p1S_Z@g&u>7 z24qAIp%qb(Dj-V1N>xljF1h4Tkh8$xAlEQ6?{Aamo$x-x`;7Cvu!%OE?;rC_qW<#9 z9B+IHFW`CX1)IvIvZ-t;o9h3ldRPppSkN`(Ju8*3M-QZqpug1bA$;Z92fnT+gTIz< z>z=Mse*!R7g?`R@Ab1zJs@vhx4DQw@1wUQ2AkBhma~^qnM}ezD$>6X4Lu>Eg%pWYM z>;(X5`U|*nXa|4luLi5CoDBu4C;tSi+hLH(HNe!$ECBH-gHT26Qld&*0Y+Cgfa>%U zm>NNz`5)&{83i-dx@fjapWGmxyc)vjR&o%IwwIal{gk+A5^kbHL35`P^vq_z*6l>C&$gg zH_TLHlE_iJ$dbyiH3g*P+L%vimCss;kKZXJ zXS6DObSb5}YX`BGu@!8U&Ly3kr}|JbjaH4wgjn&icG+vC3kUXxP^!tXA8sB$n?pFz~Rxm$T z?is+%aakyJaOss)t{xyga)KolrsP3P03=oB7>IQ+zJpRGRrxT0{T*aoMWc}p-Ns2F_lW8O8*ZiQQ7x_UB*dB-O-c7Hxi`y3s9)a`B;gn(Gd!AsskNc z<#?5$@=t-Onvt+tlp6f$W`jd@Vuwt%l zQ}x+{Q*~hv%xlZ<0F|--$!GxO#Y0iuT*|9*i-&pl_9cTV6sGPj1dy=kH%oQNTYmTW_B{Zo{K%^6 zi`_$3Ij6EzJv|th?hOF|j2%{0s}hE+vhR?o*yTAvR{b$E)iIF9wvgkewS!h^CWBLT zG6=FNlbS)*B|g3jQu@_Ft1kQUs#ceSukXD;r(AWfcUu*o>LwODoRg0Yv^BfGQQRV;CvCNPLzQZblGfl!Vi3^_jIC1*Z3$?B{t#lD0*Oe1WUCJ zKtmERyFgMIUMZKU>Iwf_Egp`iN5>>`ssaN6Abe&ouD)`c8n7#7sWt+4CKaP%`~gG1 zs@M)Pm0>m@9G_>zxj*Jgqq>*sIaTM$Yu(xcXxg;WzymvhrMggoj@DjuwYH#N6+2(9 z!hZm?v;eJbPo&YjzkyR#w1{~Xy*Ljn71Z+Qdk!&FhZ-28k;{2iJ?}78z6aSV%_H=e z57PW=0HF1*2UYVi#^}zYyedrUW2u&=GgRzGbbwJrvwZZu9B$Q-M3(C99$r^Em83Q_AMH@>TEE#$}I<+g`QEMYT7?gbu52l z2d8RV+dA;&U$M4VfeM!s2dHx6b0OBHU5Tfb_Duu$x)omxB`Rbk diff --git a/tests/ref/math-lr-mid.png b/tests/ref/math-lr-mid.png index 42e6da706870bde9c0fa6c7454cf3ab6ff39d929..5db23a42d828172254d33da5554d9193203fa2fb 100644 GIT binary patch delta 1386 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 m&^yuKJ(zo8FYJZ?$MD~3^$@tyv`IDq0000 Date: Fri, 28 Feb 2025 23:54:28 +0100 Subject: [PATCH 3/4] Add test --- tests/ref/math-lr-mid-class.png | Bin 0 -> 839 bytes tests/suite/math/delimited.typ | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 tests/ref/math-lr-mid-class.png diff --git a/tests/ref/math-lr-mid-class.png b/tests/ref/math-lr-mid-class.png new file mode 100644 index 0000000000000000000000000000000000000000..919e5f26ce86e9e8d1a735cdaed7f9233c2b549e GIT binary patch literal 839 zcmeAS@N?(olHy`uVBq!ia0vp^6+nEK14uB0-g_C$z`)Gs>EaktaqI1!^WGwfGRHsu zo1GWSobT8oA}A6#-RPzl*Q#!p0B_eWg^(!{-EY%USMClB(~_S0jX6j2Qby9*E`{RY z->Gh?I~RZE`;wUP`by${&DwdF+n;|*N}E|}S0kRr_&-BeKqq2Dg0scz){nX7d(S>d z)qSv%?a);3&v~pD3{n}E?_t`pn(adnTfvd`=#7it^7YAi*&OVbI1rt%WXfZ4*_dB% z6IF9IHoorP_-=3W^veO+%Tx%!t~ewnwS{r>lF-|Q~ugPeG<>ACtJ zE1#d+^A5A@GmtwLGs`+V;ZGB*&6FqM6$VTy?K}@&2`U)Bu>O&Amsw(^S;OfD+5Xl2 z78aL^whNx(dBC+J_TatWd~sga^;Q@(oPJnfd^(QJ_`{c|viQ~_=8E$Y{jc=&bBn_F z{7+Nud286P`K^K7$J9#)dzjuvGS6`P|DAF6{SMYQ{4F1Edo!@r$O<(99lK`QN;uR6 zIWlV|0$R;w0eR=cf9C4Y&`|Y~)llELPivfEk_YP(8W0M^=?By+zW&7aBm2j=T zV76=9?`*}6`I%e~UCk#2+>S5Vu~vA|%LOd#_IEvgT3g-j;#1$9pxCcf_~B)kSp5?1 z$dVoE$F6Ac#k?x}u+pcD`AAh4-}A*6Dpf{ok*S^8E!XC(R96yz8G_~4Q) z@p#8ot3-y${FCMLUQPhT{)3&Y{MCsv)dxP*erWT35OHw-%D>(XGgxbEgBj8nIXv6N zxaY04jsKjT&mYWcKI>d_KaC;3P5<<=SF>gI6m7|u&oOJ*?zE`Q*OGmDQJsB`X~Suz zN4dhPcMtN&glwpqu;2_s-~I=mcb<07+pWE?OpjUr5!;9BN9NCu^QDQL&KjAXz5-$ZMb78{P>&9FvD>5FzX+5=JYD@<);T3K F0RUNsgBt(< literal 0 HcmV?d00001 diff --git a/tests/suite/math/delimited.typ b/tests/suite/math/delimited.typ index 794ffd8aa..de0ce84c1 100644 --- a/tests/suite/math/delimited.typ +++ b/tests/suite/math/delimited.typ @@ -77,6 +77,19 @@ $ lr(body) quad lr(size: #1em, body) quad lr(size: #(1em+20%), body) $ +--- math-lr-mid-class --- +// Test that `mid` keeps the original class. +$ (a |b) $ +$ (a mid(|)b) $ +-- +$ (a class("fence", |)b) $ +$ (a mid(class("fence", |))b) $ +$ (a class("fence", mid(|))b) $ +-- +$ (a class("binary", |)b) $ +$ (a mid(class("binary", |))b) $ +$ (a class("binary", mid(|))b) $ + --- math-lr-unbalanced --- // Test unbalanced delimiters. $ 1/(2 (x) $ From 337080445f2e754f3d8273c38e7a0fd3e38d7ea0 Mon Sep 17 00:00:00 2001 From: Malo <57839069+MDLC01@users.noreply.github.com> Date: Wed, 5 Mar 2025 19:00:54 +0100 Subject: [PATCH 4/4] Default to Relation instead of Fence --- crates/typst-layout/src/math/lr.rs | 71 ++++++++++++++++++++--------- tests/ref/math-lr-mid-class.png | Bin 839 -> 406 bytes tests/suite/math/delimited.typ | 15 ++---- 3 files changed, 54 insertions(+), 32 deletions(-) diff --git a/crates/typst-layout/src/math/lr.rs b/crates/typst-layout/src/math/lr.rs index 5a95ba08f..2234e3589 100644 --- a/crates/typst-layout/src/math/lr.rs +++ b/crates/typst-layout/src/math/lr.rs @@ -45,12 +45,26 @@ pub fn layout_lr( // Scale up fragments at both ends. match inner_fragments { - [one] => scale(ctx, styles, one, relative_to, height, None), + [one] => scale_if_delimiter(ctx, styles, one, relative_to, height, None), [first, .., last] => { - scale(ctx, styles, first, relative_to, height, Some(MathClass::Opening)); - scale(ctx, styles, last, relative_to, height, Some(MathClass::Closing)); + scale_if_delimiter( + ctx, + styles, + first, + relative_to, + height, + Some(MathClass::Opening), + ); + scale_if_delimiter( + ctx, + styles, + last, + relative_to, + height, + Some(MathClass::Closing), + ); } - _ => {} + [] => {} } // Handle MathFragment::Variant fragments that should be scaled up. @@ -58,7 +72,7 @@ pub fn layout_lr( if let MathFragment::Variant(ref mut variant) = fragment { if variant.mid_stretched == Some(false) { variant.mid_stretched = Some(true); - scale(ctx, styles, fragment, relative_to, height, None); + scale(ctx, styles, fragment, relative_to, height); } } } @@ -99,12 +113,12 @@ pub fn layout_mid( MathFragment::Glyph(glyph) => { let mut new = glyph.clone().into_variant(); new.mid_stretched = Some(false); - new.class = MathClass::Fence; + new.class = MathClass::Relation; *fragment = MathFragment::Variant(new); } MathFragment::Variant(variant) => { variant.mid_stretched = Some(false); - variant.class = MathClass::Fence; + variant.class = MathClass::Relation; } _ => {} } @@ -114,8 +128,12 @@ pub fn layout_mid( Ok(()) } -/// Scale a math fragment to a height. -fn scale( +/// Scales a math fragment to a height if it has the class Opening, Closing, or +/// Fence. +/// +/// In case `apply` is `Some(class)`, `class` will be applied to the fragment if +/// it is a delimiter, in a way that cannot be overridden by the user. +fn scale_if_delimiter( ctx: &mut MathContext, styles: StyleChain, fragment: &mut MathFragment, @@ -127,21 +145,32 @@ fn scale( fragment.class(), MathClass::Opening | MathClass::Closing | MathClass::Fence ) { - // This unwrap doesn't really matter. If it is None, then the fragment - // won't be stretchable anyways. - let short_fall = DELIM_SHORT_FALL.at(fragment.font_size().unwrap_or_default()); - stretch_fragment( - ctx, - styles, - fragment, - Some(Axis::Y), - Some(relative_to), - height, - short_fall, - ); + scale(ctx, styles, fragment, relative_to, height); if let Some(class) = apply { fragment.set_class(class); } } } + +/// Scales a math fragment to a height. +fn scale( + ctx: &mut MathContext, + styles: StyleChain, + fragment: &mut MathFragment, + relative_to: Abs, + height: Rel, +) { + // This unwrap doesn't really matter. If it is None, then the fragment + // won't be stretchable anyways. + let short_fall = DELIM_SHORT_FALL.at(fragment.font_size().unwrap_or_default()); + stretch_fragment( + ctx, + styles, + fragment, + Some(Axis::Y), + Some(relative_to), + height, + short_fall, + ); +} diff --git a/tests/ref/math-lr-mid-class.png b/tests/ref/math-lr-mid-class.png index 919e5f26ce86e9e8d1a735cdaed7f9233c2b549e..0c5269c5ea8b07acc3c2876e937f71f191d2aacf 100644 GIT binary patch delta 393 zcmV;40e1e!29^Vm7k^3!00000RlU!s00049NklKH z78{eGKcFE9gm4In8Uhi)TM!Oe&(NMcf`WnwA`6Ew8lwV3GimB2y`JCT4evqwy$zi+ zp5+6Fd(QpE_@jymEU>@=8-s^+!m0pJy@L8sJ6!SzO94>W0e`Qg8+LR2h8G@yoU0jj zEEue+4I+5#czuNBXomA`NIv&c5&SaC(hcprez-ruK{0|GMG}wtVaMVl&CKaV2%lH) z=fQFeJg!Uode0Bx(b4WV1%9NBTDN|CWzyb>_ zu)vyN+Xa9MZ-3jbxV9;{)r`Ky>33+h48a*9I1x0=zqP$W=vFNQG8XGkkcxv3LE{b05ENGZtCxB+l n`~d-QZMoF~3oP*efPVn>8a4qf)P+v~0000P@t1|SH%_cEA)ftk?w-?2qRP$Y1= z(M>O|RoyND-mYB=AyXu}-=?Lm+#MLEB|Y^UbB^YvjHI(&3dO;{Q{7T`F8<8-B{Adm zmBjs;wev2wKmU}JHnY;MMm&x2e}=ArPQ-=;XN%XZA9Kz3)}MWls{3Fi+o7r6pYvER z7^E^R-@~+HHQR?Ewt^$=(Hj@P6ZhtncZum^m?boaHc(+dwKP-oV?Og$(tTuJ8GBqaNo4>2TR|`s~7Z7{>sgA;Pk6l zU7+O$o30u`VZ9M6w;0et4|a0(FT4CQZ$tb2@87=JUCswN@?g_*^*>fVKey){X4z*T zcPwU>b#}s^CRUp%Pr@q0*ycFnYvaHt7#W!6jtw3^ET z^3R9=%+;Zxq3R{8q2Ajc`SQ>g1NKbr9m?XzCOd4{%UdMN_Q8>>KH*w@!ED#I-`R>C z^E0^~x|&Z4xE)`zW3BL_mkU_f?eBX0w6?n4#izbIL9t(}@Wab6vHB(2ktI9Sk6qE? zi+NS{VWm$Q^O349zUPZCRH}x4KY8%+*{}8rv-GWe&PejHDabGW@xdiq;_;5FR*4Lg z`6tWgy_^6_0S|Vv@>eIy)K?$)Q2U|H_d&$L{VV@^H_TwIu?=QOU*zy?7vr9{);9ig zc0PYFtNE;R&HXfn{5Jj5%U;cv*;BM7Up~jIVY}0!HeXBj=|y$+Ii?M#nI7c|tKL1x zBNMWrYQlmu41N0_eBOE5J#V-6zA`;#{YPvct{<5{KhCqpwBe;B$K%bP0l+XkK{icNj diff --git a/tests/suite/math/delimited.typ b/tests/suite/math/delimited.typ index de0ce84c1..8431f25d0 100644 --- a/tests/suite/math/delimited.typ +++ b/tests/suite/math/delimited.typ @@ -78,17 +78,10 @@ $ lr(body) quad lr(size: #(1em+20%), body) $ --- math-lr-mid-class --- -// Test that `mid` keeps the original class. -$ (a |b) $ -$ (a mid(|)b) $ --- -$ (a class("fence", |)b) $ -$ (a mid(class("fence", |))b) $ -$ (a class("fence", mid(|))b) $ --- -$ (a class("binary", |)b) $ -$ (a mid(class("binary", |))b) $ -$ (a class("binary", mid(|))b) $ +// Test that `mid` creates a Relation, but that can be overridden. +$ (a | b) $ +$ (a mid(|) b) $ +$ (a class("unary", |) b) $ --- math-lr-unbalanced --- // Test unbalanced delimiters.