From 3d1ae80721a9a65f0ac29266aa39298bfbed48da Mon Sep 17 00:00:00 2001 From: Mc-Zen <52877387+Mc-Zen@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:05:11 +0100 Subject: [PATCH 1/2] [fix] regression with units with empty numerator Issue introduced in 8b76ef26a2608c582626511a765ffe73ef5a7110 --- src/units.typ | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/units.typ b/src/units.typ index 9d6c2ad..da8fed1 100644 --- a/src/units.typ +++ b/src/units.typ @@ -252,7 +252,9 @@ if num-state.math { separator = $separator$ } - if unit.numerator.first().at(0) in ("°", "′", "″", sym.degree, sym.prime, sym.prime.double) { + + let angles = ("°", "′", "″", sym.degree, sym.prime, sym.prime.double) + if unit.numerator.len() > 0 and unit.numerator.at(0).at(0) in angles { separator = none } From 04c8e48dda91a26d2cc0a8d289b9c6f88bd5e21b Mon Sep 17 00:00:00 2001 From: Mc-Zen <52877387+Mc-Zen@users.noreply.github.com> Date: Thu, 30 Oct 2025 17:05:47 +0100 Subject: [PATCH 2/2] [add] test --- tests/zi/basic/ref/1.png | Bin 3937 -> 4178 bytes tests/zi/basic/test.typ | 1 + 2 files changed, 1 insertion(+) diff --git a/tests/zi/basic/ref/1.png b/tests/zi/basic/ref/1.png index 5b21b2cab784b0d0e2afef5a135b6819fc9571d6..f4785aeaad49ef8af640d7bac607861808f0d8e0 100644 GIT binary patch literal 4178 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 diff --git a/tests/zi/basic/test.typ b/tests/zi/basic/test.typ index 4015b40..48c3766 100644 --- a/tests/zi/basic/test.typ +++ b/tests/zi/basic/test.typ @@ -12,6 +12,7 @@ #zi.arcsecond[23] \ #zi.kN[23] \ #zi.degree[45] \ +#zi.declare("1/s")([2]) \ #zi.kN() // later make them types maybe? Then we can just call #zi.kN, that looks much better