diff --git a/src/utils/heading-numbering.typ b/src/utils/heading-numbering.typ index 9c64f98..52c1323 100644 --- a/src/utils/heading-numbering.typ +++ b/src/utils/heading-numbering.typ @@ -89,11 +89,13 @@ heading-numbering.hanging-indent = measure(it-number-full).width } show: par.with( - first-line-indent: heading-numbering.first-line-indent, - hanging-indent: heading-numbering.hanging-indent + first-line-indent: (amount: heading-numbering.first-line-indent, all: true), + hanging-indent: heading-numbering.hanging-indent, ) if it-number == none { it.body + } else if heading-numbering.hanging-indent.to-absolute() < heading-numbering.first-line-indent.to-absolute() { + it-number-full + it.body } else { box(width: heading-numbering.hanging-indent, it-number-full) + it.body } diff --git a/tests/heading-numbering/ref/8.png b/tests/heading-numbering/ref/8.png new file mode 100644 index 0000000..e5f0c38 Binary files /dev/null and b/tests/heading-numbering/ref/8.png differ diff --git a/tests/heading-numbering/test.typ b/tests/heading-numbering/test.typ index c8454e1..e82c260 100644 --- a/tests/heading-numbering/test.typ +++ b/tests/heading-numbering/test.typ @@ -123,3 +123,27 @@ #test-content ] + +#testcase[ + #let (theme, (song, hei, kai, fang)) = ctyp( + heading-numbering: (( + format: "一", + sep: 1em, + ), ( + format: "1.1", + sep: " ", + first-line-indent: 22pt, + hanging-indent: 0em + ), ( + format: "1.1", + sep: " ", + first-line-indent: 2em, + hanging-indent: 4em + )) + ) + #show: theme + + = 中文编号格式示例 + + #test-content +]