From d056280165b981ef7a11f5bfb02417ef96760352 Mon Sep 17 00:00:00 2001 From: LU Jialin Date: Mon, 11 Sep 2023 16:47:08 +0800 Subject: [PATCH] Wrap into an equation when a Math expr is evaluated (#2081) --- crates/typst/src/eval/mod.rs | 7 ++++--- tests/ref/bugs/math-eval.png | Bin 0 -> 2610 bytes tests/typ/bugs/math-eval.typ | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 tests/ref/bugs/math-eval.png create mode 100644 tests/typ/bugs/math-eval.typ diff --git a/crates/typst/src/eval/mod.rs b/crates/typst/src/eval/mod.rs index fffedc9fa..a6fd5e172 100644 --- a/crates/typst/src/eval/mod.rs +++ b/crates/typst/src/eval/mod.rs @@ -202,9 +202,10 @@ pub fn eval_string( EvalMode::Markup => { Value::Content(root.cast::().unwrap().eval(&mut vm)?) } - EvalMode::Math => { - Value::Content(root.cast::().unwrap().eval(&mut vm)?) - } + EvalMode::Math => Value::Content((vm.items.equation)( + root.cast::().unwrap().eval(&mut vm)?, + false, + )), }; // Handle control flow. diff --git a/tests/ref/bugs/math-eval.png b/tests/ref/bugs/math-eval.png new file mode 100644 index 0000000000000000000000000000000000000000..cdfd4cce3c12449babdc5ef428041ba4774c299c GIT binary patch literal 2610 zcmV-23eEM2P)bCb3`AF`8{U5sm3zl-l;F5g+-#roFw*Qit~ zl}e>jsZ_N^9iv82Bd8J72x{aFZ#$gzcv8GZGtiG4iG_@H^qP1CRv2@+DS9t z&qvM>;O`MN-Srj#rYP5CB>)_I=Bxum7&`%4gv%l$&hiwrSxr3*B z+G^=`crJ;fP4X$*FD)9Bxupqsfj)B3w?+UAPG7-B?M1sq*x19%6MzXP!DAF51yDUjSw+zbFZ_IsM$cJyKQ!k?HD^{KWy4AV76dk(y5f*ogovM#r<;C9A_ z2y*GjY`6&3Z5#e4Z^7R04xY~<+WaAw4!(4lZXaCV*p=g0f3n!Fgv|iVm}p3LG_oR{0P2H5q;YU zfMeRvf$oD5Ef~l>9c|a;EDjLi)d7gsi4pMCT!F%hzjywd+|w2JCf_(hgoe`*9cT@} zYt4Xtngl}$fd5#`wzx~Iq0-)mK2UyyRL%E@lAQn;+!OF|7Q#;gjGl{G&IyThs;t*U zC_ch=O$s8zV^;veo5RkgF1YFey6(lQms%)3!tCalc|`&+Y0UWGlrEF@1KfVxfK^kp zC#ae6jshYK9EsTxH$-{?&;zjXBdiP2hEb!7?O&i)a(&nCp8JD6BJ7-KdMt(tZ~Tsh z-Wh*6Laczu$A?-;cu3o7a)~`6bnFn_TcASHIOGn@#r6pD(`Gt+U&{zzmD*`LY#8H~ zL6z_|NL?MNw=qImXn4UjS%hruce8h6DJf`s(XwwWBK&^5*e($)eVL2IA|19xi0+#H zN8>iv*)#>z z7XuT)}OTESVY} zLoPZKPH8VGKEe!FSkXftBi#CDhf-h22e}NG`C_Vxk0zxt;2P2Jed*&xwfkL0Qi7=O za_-^yFuzPh<6XeJy+cH}m2L3_O5fnr1q0Qj+~r0g0Er)XUj|4|0Jr}+K!n?a7cLpL zSQa5p`|;*ie?#u3=j!hMq3z5+r;ZRj5+7@Aj8>W7v&TNuK=ysNMos1L(=2NN6^>TP?4DUgz_qa=l${ybfVGT0v7Gc`3 zPkI8F-o1{DSE5Z3N<2OvAKKSbCyj8#WBTwsNO4|8C1anUS+4U(CBw0FD(srFdP#>} z*egO>{rKnG1FT$y+|29b^9VvEAn#-s_BL4S9(HEXfPwDUfHfqHrjqTbP% z6%~QV)F=b1M%T*%Q1rY*cWwJV5kPLeVnivgd-;XFdli7UR$@(#^J^$Q0`Z!k066W8 zD6we-xN1@X@bSZJ`%sB>R5E!urzk%{xb_YJTiPRfsVCsm3Q^z?%(CJnu2La=aI+Yc zAHl1gY~CSC^A*rxRPE*+qUyhX2M37I^&Ldty@1$6dkeC(YY+tu;+~2YHyL+Z`4Nl_ zK11|lGXQ!$1#Hq@&B*|m?1Nc&Q;9iLy4<#hLGck1HM;R~rC zNFWif^;3L=_1c>tYI_b~x3hsc-FoN;2>?%@#H#)c^-7Q6_bg`9mjJM7v`=io*h$F% z*VBHqEsEstX8%f^RKNH2I_c|AF&|0?C*ZBBmhH_9G80jq+7g4%ytzT_}^3XC0w z+#YZVj&Fi@m#Yf=R;A4hW2arZEZ4FBSjFF*Ki3`a{_#zg$ zeUqo1La`AdwTr0kM**or@s52{ybvq<#K_8Ub}Xs1ei%phf`H2!I*^P$K|p1VD`ds1fdC8kI_=QmIrbm8zEh4`9M( UvE)IWRsaA107*qoM6N<$g4e{yumAu6 literal 0 HcmV?d00001 diff --git a/tests/typ/bugs/math-eval.typ b/tests/typ/bugs/math-eval.typ new file mode 100644 index 000000000..31450b8dc --- /dev/null +++ b/tests/typ/bugs/math-eval.typ @@ -0,0 +1,5 @@ +// Evaluating a math expr should renders the same as an equation + +#eval(mode: "math", "f(a) = cases(a + b\, space space x >= 3,a + b\, space space x = 5)") + +$f(a) = cases(a + b\, space space x >= 3,a + b\, space space x = 5)$