From f85624a167157d81a12ebeee754cb4896a89a5cb Mon Sep 17 00:00:00 2001 From: Shiqian Xia <150573175+Shichien@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:50:32 +0800 Subject: [PATCH 1/4] feat: support \mathscr command --- packages/mitex/specs/latex/standard.typ | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/mitex/specs/latex/standard.typ b/packages/mitex/specs/latex/standard.typ index 4e39010..b55e91f 100644 --- a/packages/mitex/specs/latex/standard.typ +++ b/packages/mitex/specs/latex/standard.typ @@ -165,6 +165,10 @@ Bbb: define-cmd(1, alias: "bb"), mathbb: define-cmd(1, alias: "bb"), mathcal: define-cmd(1, alias: "cal"), + mathscr: define-cmd(1, handle: it => { + let s = get-tex-str(it) + s.clusters().map(x => $scr(#x)$).join() + }), mathbin: define-cmd(1, handle: it => math.class("binary", it)), mathclose: define-cmd(1, handle: it => math.class("closing", it)), mathinner: define-cmd(1, handle: it => math.class("fence", it)), From 96d3f4fe25282e544b19edc0f3a8a4d80c08ccc2 Mon Sep 17 00:00:00 2001 From: Deralive <10235101526@stu.ecnu.edu.cn> Date: Tue, 23 Dec 2025 14:01:44 +0800 Subject: [PATCH 2/4] chore: update deprecated symbols to latest --- packages/mitex/specs/latex/standard.typ | 68 ++++++++++++------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/packages/mitex/specs/latex/standard.typ b/packages/mitex/specs/latex/standard.typ index b55e91f..742dbf7 100644 --- a/packages/mitex/specs/latex/standard.typ +++ b/packages/mitex/specs/latex/standard.typ @@ -389,14 +389,14 @@ cdotp: define-sym("dot.c"), sdot: define-sym("dot.c"), times: define-sym("times"), - oplus: define-sym("plus.circle"), - ominus: define-sym("minus.circle"), + oplus: define-sym("plus.o"), + ominus: define-sym("minus.o"), pm: define-sym("plus.minus"), plusmn: define-sym("plus.minus"), mp: define-sym("minus.plus"), div: define-sym("div"), star: define-sym("star"), - cap: define-sym("sect"), + cap: define-sym("inter"), cup: define-sym("union"), "in": define-sym("in"), isin: define-sym("in"), @@ -448,24 +448,24 @@ rbrack: define-sym("bracket.r"), lgroup: define-sym("⟮"), rgroup: define-sym("⟯"), - llbracket: define-sym("bracket.l.double"), - rrbracket: define-sym("bracket.r.double"), + llbracket: define-sym("bracket.stroked.l"), + rrbracket: define-sym("bracket.stroked.r"), angle: define-sym("angle"), - lang: define-sym("angle.l"), - rang: define-sym("angle.r"), - langle: define-sym("angle.l"), - rangle: define-sym("angle.r"), + lang: define-sym("chevron.l"), + rang: define-sym("chevron.r"), + langle: define-sym("chevron.l"), + rangle: define-sym("chevron.r"), measuredangle: define-sym("angle.arc"), sphericalangle: define-sym("angle.spheric"), ast: define-sym("ast"), checkmark: define-sym("checkmark"), - circledast: define-sym("ast.circle"), + circledast: define-sym("convolve.o"), backslash: define-sym("backslash"), dagger: define-sym("dagger"), ddagger: define-sym("dagger.double"), - circleddash: define-sym("dash.circle"), - odot: define-sym("dot.circle"), - bigodot: define-sym("dot.circle.big"), + circleddash: define-sym("dash.o"), + odot: define-sym("dot.o"), + bigodot: define-sym("dot.o.big"), boxdot: define-sym("dot.square"), dots: define-sym("dots.h"), cdots: define-sym("dots.h.c"), @@ -486,13 +486,13 @@ backsim: define-sym("tilde.rev"), prime: define-sym("prime"), backprime: define-sym("prime.rev"), - bigoplus: define-sym("plus.circle.big"), + bigoplus: define-sym("plus.o.big"), dotplus: define-sym("plus.dot"), boxplus: define-sym("plus.square"), boxminus: define-sym("minus.square"), eqsim: define-sym("minus.tilde"), - otimes: define-sym("times.circle"), - bigotimes: define-sym("times.circle.big"), + otimes: define-sym("times.o"), + bigotimes: define-sym("times.o.big"), divideontimes: define-sym("times.div"), leftthreetimes: define-sym("times.three.l"), rightthreetimes: define-sym("times.three.r"), @@ -583,10 +583,10 @@ biguplus: define-sym("union.plus.big"), sqcup: define-sym("union.sq"), bigsqcup: define-sym("union.sq.big"), - bigcap: define-sym("sect.big"), - Cap: define-sym("sect.double"), - sqcap: define-sym("sect.sq"), - partial: define-sym("diff"), + bigcap: define-sym("inter.big"), + Cap: define-sym("inter.double"), + sqcap: define-sym("inter.sq"), + partial: define-sym("partial"), nabla: define-sym("nabla"), coprod: define-sym("product.co"), forall: define-sym("forall"), @@ -624,7 +624,7 @@ spadesuit: define-sym("suit.spade"), bull: define-sym("bullet"), bullet: define-sym("bullet"), - circledcirc: define-sym("circle.nested"), + circledcirc: define-sym("compose.o"), rhd: define-sym("triangle.stroked.r"), lhd: define-sym("triangle.stroked.l"), triangle: define-sym("triangle.stroked.t"), @@ -697,8 +697,8 @@ vDash: define-sym("tack.r.double"), nvDash: define-sym("tack.r.double.not"), dashv: define-sym("tack.l"), - hbar: define-sym("planck.reduce"), - hslash: define-sym("planck.reduce"), + hbar: define-sym("planck"), + hslash: define-sym("planck"), Re: define-sym("Re"), Im: define-sym("Im"), AA: define-sym("circle(A)"), @@ -759,9 +759,9 @@ barwedge: define-sym("⊼"), beth: define-sym("beth"), between: define-sym("≬"), - bigdot: define-sym("dot.circle.big"), - bigplus: define-sym("plus.circle.big"), - bigtimes: define-sym("times.circle.big"), + bigdot: define-sym("dot.o.big"), + bigplus: define-sym("plus.o.big"), + bigtimes: define-sym("times.o.big"), blacktriangle: define-sym("triangle.filled.t"), blacktriangledown: define-sym("triangle.filled.b"), blacktriangleleft: define-sym("triangle.filled.l"), @@ -804,7 +804,7 @@ diagup: define-sym("╱"), doteqdot: define-sym("≑"), doublebarwedge: define-sym("⩞"), - doublecap: define-sym("sect.double"), + doublecap: define-sym("inter.double"), doublecup: define-sym("union.double"), eqcirc: define-sym("≖"), Eqcolon: define-sym("−::"), @@ -846,7 +846,7 @@ maltese: define-sym("maltese"), mathellipsis: define-sym("..."), mathsterling: define-sym("pound"), - mho: define-sym("ohm.inv"), + mho: define-sym("Omega.inv"), minuscolon: define-sym("dash.colon"), minuscoloncolon: define-sym("−::"), minuso: define-sym("⦵"), @@ -977,12 +977,12 @@ pod: define-cmd(1, handle: it => $quad (it)$), "set": define-cmd(1, handle: it => $\{it\}$), Set: define-cmd(1, handle: it => $lr(\{it\})$), - bra: define-cmd(1, handle: it => $angle.l it|$), - Bra: define-cmd(1, handle: it => $lr(angle.l it|)$), - ket: define-cmd(1, handle: it => $|it angle.r$), - Ket: define-cmd(1, handle: it => $lr(|it angle.r)$), - braket: define-cmd(1, handle: it => $angle.l it angle.r$), - Braket: define-cmd(1, handle: it => $lr(angle.l it angle.r)$), + bra: define-cmd(1, handle: it => $chevron.l it|$), + Bra: define-cmd(1, handle: it => $lr(chevron.l it|)$), + ket: define-cmd(1, handle: it => $|it chevron.r$), + Ket: define-cmd(1, handle: it => $lr(|it chevron.r)$), + braket: define-cmd(1, handle: it => $chevron.l it chevron.r$), + Braket: define-cmd(1, handle: it => $lr(chevron.l it chevron.r)$), fbox: define-cmd(1, handle: it => box(stroke: 0.5pt, $it$)), hbox: define-cmd(1, handle: it => it), // Matrices From 6c87ebb29cf82cb05b4b6a6d1cd2b9dbcd58b7b6 Mon Sep 17 00:00:00 2001 From: Deralive <10235101526@stu.ecnu.edu.cn> Date: Tue, 23 Dec 2025 16:21:02 +0800 Subject: [PATCH 3/4] feat: support some missing eqq commands --- packages/mitex/specs/latex/standard.typ | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/mitex/specs/latex/standard.typ b/packages/mitex/specs/latex/standard.typ index 742dbf7..38ac5d5 100644 --- a/packages/mitex/specs/latex/standard.typ +++ b/packages/mitex/specs/latex/standard.typ @@ -506,8 +506,10 @@ gg: define-sym("gt.double"), gtreqless: define-sym("gt.eq.lt"), gtreqqless: define-sym("⪌"), + gtrapprox: define-sym("gt.approx"), ngeq: define-sym("gt.eq.not"), geqq: define-sym("gt.equiv"), + ngeqq: of-sym(math.cancel(angle: 20deg, "\u{2267}")), gtrless: define-sym("gt.lt"), gneqq: define-sym("gt.nequiv"), ngtr: define-sym("gt.not"), @@ -522,7 +524,9 @@ ll: define-sym("lt.double"), lesseqgtr: define-sym("lt.eq.gt"), nleq: define-sym("lt.eq.not"), + nleqslant: of-sym(math.cancel(angle: 20deg, length: 1em, math.lt.eq.slant)), leqq: define-sym("lt.equiv"), + nleqq: of-sym(math.cancel(angle: 20deg, "\u{2266}")), lessgtr: define-sym("lt.gt"), lneqq: define-sym("lt.nequiv"), nless: define-sym("lt.not"), @@ -569,12 +573,14 @@ notni: define-sym("in.rev.not"), Subset: define-sym("subset.double"), nsubseteq: define-sym("subset.eq.not"), + nsubseteqq: of-sym(math.cancel(angle: 20deg, length: 1em, "\u{2AC5}")), sqsubseteq: define-sym("subset.eq.sq"), subsetneq: define-sym("subset.neq"), supset: define-sym("supset"), Supset: define-sym("supset.double"), supseteq: define-sym("supset.eq"), nsupseteq: define-sym("supset.eq.not"), + nsupseteqq: of-sym(math.cancel(angle: 20deg, length: 1em, "\u{2AC6}")), sqsupseteq: define-sym("supset.eq.sq"), supsetneq: define-sym("supset.neq"), bigcup: define-sym("union.big"), @@ -838,7 +844,6 @@ llcorner: define-sym("⌞"), llless: define-sym("<<<"), lnapprox: define-sym("⪉"), - gtrapprox: define-sym("⪆"), lneq: define-sym("⪇"), lrcorner: define-sym("⌟"), lq: define-sym("quote.l.single"), From 786f20adaff18d04e3d75afffe6bdf75701b8d42 Mon Sep 17 00:00:00 2001 From: Deralive <10235101526@stu.ecnu.edu.cn> Date: Thu, 25 Dec 2025 20:14:30 +0800 Subject: [PATCH 4/4] fix(test): accept insta tests review --- crates/mitex/tests/cvt/left_right.rs | 2 +- crates/mitex/tests/cvt/misc.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/mitex/tests/cvt/left_right.rs b/crates/mitex/tests/cvt/left_right.rs index 94b68f6..93b3467 100644 --- a/crates/mitex/tests/cvt/left_right.rs +++ b/crates/mitex/tests/cvt/left_right.rs @@ -6,7 +6,7 @@ fn base() { assert_snapshot!(convert_math(r#"\left.a\right."#).unwrap(), @"lr( a )"); assert_snapshot!(convert_math(r#"\left. \right] ,"#).unwrap(), @r###"lr( \] ) \,"###); assert_snapshot!(convert_math(r#"\left . a \right \|"#).unwrap(), @"lr( a || )"); - assert_snapshot!(convert_math(r#"\left\langle a\right\|"#).unwrap(), @"lr(angle.l a || )"); + assert_snapshot!(convert_math(r#"\left\langle a\right\|"#).unwrap(), @"lr(chevron.l a || )"); // Note: this is an invalid expression // Error handling assert_snapshot!(convert_math(r#"\left{.}a\right{.}"#).unwrap_err(), @r###"error: error unexpected: "}""###); diff --git a/crates/mitex/tests/cvt/misc.rs b/crates/mitex/tests/cvt/misc.rs index ad318da..e017e73 100644 --- a/crates/mitex/tests/cvt/misc.rs +++ b/crates/mitex/tests/cvt/misc.rs @@ -115,7 +115,7 @@ fn test_convert_lr() { ); assert_snapshot!(convert_math(r#"$\left . a \right \|$"#).unwrap(), @"lr( a || )" ); - assert_snapshot!(convert_math(r#"$\left\langle a\right\|$"#).unwrap(), @"lr(angle.l a || )" + assert_snapshot!(convert_math(r#"$\left\langle a\right\|$"#).unwrap(), @"lr(chevron.l a || )" ); assert_snapshot!(convert_math(r#"$\left\lbrack\lbrack x\rbrack\right\rbrack$"#).unwrap(), @"lr(bracket.l bracket.l x bracket.r bracket.r )" );