diff --git a/crates/typst-library/src/introspection/counter.rs b/crates/typst-library/src/introspection/counter.rs index b884844c6..f67c6daab 100644 --- a/crates/typst-library/src/introspection/counter.rs +++ b/crates/typst-library/src/introspection/counter.rs @@ -366,20 +366,22 @@ impl Counter { .custom() .or_else(|| { let styles = styles?; - let CounterKey::Selector(Selector::Elem(func, _)) = self.0 else { - return None; - }; - - if func == HeadingElem::elem() { - HeadingElem::numbering_in(styles).clone() - } else if func == FigureElem::elem() { - FigureElem::numbering_in(styles).clone() - } else if func == EquationElem::elem() { - EquationElem::numbering_in(styles).clone() - } else if func == FootnoteElem::elem() { - Some(FootnoteElem::numbering_in(styles).clone()) - } else { - None + match self.0 { + CounterKey::Page => PageElem::numbering_in(styles).clone(), + CounterKey::Selector(Selector::Elem(func, _)) => { + if func == HeadingElem::elem() { + HeadingElem::numbering_in(styles).clone() + } else if func == FigureElem::elem() { + FigureElem::numbering_in(styles).clone() + } else if func == EquationElem::elem() { + EquationElem::numbering_in(styles).clone() + } else if func == FootnoteElem::elem() { + Some(FootnoteElem::numbering_in(styles).clone()) + } else { + None + } + } + _ => None, } }) .unwrap_or_else(|| NumberingPattern::from_str("1.1").unwrap().into()); diff --git a/tests/ref/counter-page-display.png b/tests/ref/counter-page-display.png new file mode 100644 index 000000000..040b634d5 Binary files /dev/null and b/tests/ref/counter-page-display.png differ diff --git a/tests/suite/introspection/counter.typ b/tests/suite/introspection/counter.typ index e97f05dd4..2f095f2fb 100644 --- a/tests/suite/introspection/counter.typ +++ b/tests/suite/introspection/counter.typ @@ -102,6 +102,14 @@ B #set page(numbering: "1 / 1", margin: (bottom: 20pt)) #counter(page).update(5) +--- counter-page-display --- +// Counter display should use numbering from style chain. +#set page( + numbering: "A", + margin: (bottom: 20pt), + footer: context align(center, counter(page).display()) +) + --- counter-figure --- // Count figures. #figure(numbering: "A", caption: [Four 'A's], kind: image, supplement: "Figure")[_AAAA!_]