diff --git a/crates/typst/src/eval/math.rs b/crates/typst/src/eval/math.rs index 62314fc23..0e5e0eef0 100644 --- a/crates/typst/src/eval/math.rs +++ b/crates/typst/src/eval/math.rs @@ -55,7 +55,7 @@ impl Eval for ast::MathAttach<'_> { if let Some(expr) = self.top() { elem.push_t(Some(expr.eval_display(vm)?)); } else if let Some(primes) = self.primes() { - elem.push_t(Some(primes.eval(vm)?)); + elem.push_tr(Some(primes.eval(vm)?)); } if let Some(expr) = self.bottom() { diff --git a/tests/ref/math/opticalsize.png b/tests/ref/math/opticalsize.png index 4f2197105..303f7bee7 100644 Binary files a/tests/ref/math/opticalsize.png and b/tests/ref/math/opticalsize.png differ diff --git a/tests/typ/math/opticalsize.typ b/tests/typ/math/opticalsize.typ index f7d3aa88e..83e2ce3d7 100644 --- a/tests/typ/math/opticalsize.typ +++ b/tests/typ/math/opticalsize.typ @@ -37,7 +37,7 @@ $a'$, $a'''_b$, $'$, $'''''''$ $a' ' '$, $' ' '$, $a' '/b$ --- -// Test complex prime combilnations +// Test complex prime combinations $a'_b^c$, $a_b'^c$, $a_b^c'$, $a_b'^c'^d'$ $(a'_b')^(c'_d')$, $a'/b'$, $a_b'/c_d'$ @@ -46,4 +46,24 @@ $∫'$, $∑'$, $ ∑'_S' $ --- // Test attaching primes only -$a' = a^', a_', a_'''^''^'$ \ No newline at end of file +$a' = a^', a_', a_'''^''^'$ + +--- +// Test primes always attaching as scripts +$ x' $ +$ x^' $ +$ attach(x, t: ') $ +$ <' $ +$ attach(<, br: ') $ +$ op(<, limits: #true)' $ +$ limits(<)' $ + +--- +// Test forcefully attaching primes as limits +$ attach(<, t: ') $ +$ <^' $ +$ attach(<, b: ') $ +$ <_' $ + +$ limits(x)^' $ +$ attach(limits(x), t: ') $