diff --git a/crates/typst-eval/src/markup.rs b/crates/typst-eval/src/markup.rs index cc9606269..baa548459 100644 --- a/crates/typst-eval/src/markup.rs +++ b/crates/typst-eval/src/markup.rs @@ -251,7 +251,7 @@ impl Eval for ast::EnumItem<'_> { let body = self.body().eval(vm)?; let mut elem = EnumItem::new(body); if let Some(number) = self.number() { - elem.number.set(Some(number)); + elem.number.set(Smart::Custom(number)); } Ok(elem.pack()) } diff --git a/crates/typst-html/src/rules.rs b/crates/typst-html/src/rules.rs index 04a58ca47..0fe5bd087 100644 --- a/crates/typst-html/src/rules.rs +++ b/crates/typst-html/src/rules.rs @@ -103,7 +103,7 @@ const ENUM_RULE: ShowFn = |elem, _, styles| { let body = Content::sequence(elem.children.iter().map(|item| { let mut li = HtmlElem::new(tag::li); - if let Some(nr) = item.number.get(styles) { + if let Smart::Custom(nr) = item.number.get(styles) { li = li.with_attr(attr::value, eco_format!("{nr}")); } // Text in wide enums shall always turn into paragraphs. diff --git a/crates/typst-library/src/model/enum.rs b/crates/typst-library/src/model/enum.rs index 388fb9eda..93a2c1dc6 100644 --- a/crates/typst-library/src/model/enum.rs +++ b/crates/typst-library/src/model/enum.rs @@ -220,7 +220,7 @@ impl EnumElem { pub struct EnumItem { /// The item's number. #[positional] - pub number: Option, + pub number: Smart, /// The item's body. #[required] diff --git a/tests/ref/enum-item-number-optional.png b/tests/ref/enum-item-number-optional.png new file mode 100644 index 000000000..2f30566ca Binary files /dev/null and b/tests/ref/enum-item-number-optional.png differ diff --git a/tests/suite/model/enum.typ b/tests/suite/model/enum.typ index 7ee4dc20c..f7e097bda 100644 --- a/tests/suite/model/enum.typ +++ b/tests/suite/model/enum.typ @@ -56,6 +56,10 @@ a + 0. enum.item(5)[Fifth] ) +--- enum-item-number-optional --- +#enum.item[First] +#enum.item[Second] + --- enum-numbering-pattern --- // Test numbering pattern. #set enum(numbering: "(1.a.*)") @@ -217,7 +221,7 @@ a + 0. --- issue-2530-enum-item-panic --- // Enum item (pre-emptive) -#enum.item(none)[Hello] +#enum.item(auto)[Hello] #enum.item(17)[Hello] --- issue-5503-enum-in-align ---