@@ -985,6 +985,44 @@ impl TheoremRef {
985985// Numbering Configuration
986986// ============================================================================
987987
988+ /// When to reset counters. Uses heading level identifiers
989+ /// corresponding to the core heading block's level attribute.
990+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
991+ #[ serde( rename_all = "camelCase" ) ]
992+ pub enum ResetTrigger {
993+ /// Reset at heading level 1.
994+ Heading1 ,
995+ /// Reset at heading level 2.
996+ Heading2 ,
997+ /// Reset at heading level 3.
998+ Heading3 ,
999+ /// Reset at heading level 4.
1000+ Heading4 ,
1001+ /// Reset at heading level 5.
1002+ Heading5 ,
1003+ /// Reset at heading level 6.
1004+ Heading6 ,
1005+ /// Never reset.
1006+ None ,
1007+ }
1008+
1009+ /// Numbering style pattern.
1010+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize ) ]
1011+ pub enum NumberingStylePattern {
1012+ /// Sequential numbering (e.g., 1, 2, 3).
1013+ #[ serde( rename = "number" ) ]
1014+ Number ,
1015+ /// Chapter-scoped numbering (e.g., 2.1, 2.2).
1016+ #[ serde( rename = "chapter.number" ) ]
1017+ ChapterNumber ,
1018+ /// Section-scoped numbering (e.g., 3.1, 3.2).
1019+ #[ serde( rename = "section.number" ) ]
1020+ SectionNumber ,
1021+ /// Chapter-and-section-scoped numbering (e.g., 2.3.1).
1022+ #[ serde( rename = "chapter.section.number" ) ]
1023+ ChapterSectionNumber ,
1024+ }
1025+
9881026/// Numbering configuration for academic content.
9891027#[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
9901028#[ serde( rename_all = "camelCase" ) ]
@@ -1014,12 +1052,13 @@ pub struct NumberingConfig {
10141052#[ derive( Debug , Clone , PartialEq , Eq , Serialize , Deserialize ) ]
10151053#[ serde( rename_all = "camelCase" ) ]
10161054pub struct NumberingStyle {
1017- /// Format string (e.g., "{chapter}.{number}").
1018- pub format : String ,
1055+ /// Numbering style pattern.
1056+ #[ serde( default , skip_serializing_if = "Option::is_none" , alias = "format" ) ]
1057+ pub style : Option < NumberingStylePattern > ,
10191058
1020- /// Whether to reset numbering per chapter .
1021- #[ serde( default ) ]
1022- pub reset_per_chapter : bool ,
1059+ /// When to reset counters .
1060+ #[ serde( default , skip_serializing_if = "Option::is_none" ) ]
1061+ pub reset_on : Option < ResetTrigger > ,
10231062
10241063 /// Starting number.
10251064 #[ serde( default = "default_start" ) ]
0 commit comments