summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--library/src/meta/counter.rs12
-rw-r--r--tests/ref/meta/counter-page.pngbin9723 -> 14766 bytes
-rw-r--r--tests/typ/meta/counter-page.typ1
3 files changed, 7 insertions, 6 deletions
diff --git a/library/src/meta/counter.rs b/library/src/meta/counter.rs
index b61e8913..27fd548f 100644
--- a/library/src/meta/counter.rs
+++ b/library/src/meta/counter.rs
@@ -277,8 +277,8 @@ impl Counter {
if is_page {
let page = introspector.page(id);
let delta = page.get() - prev_page.get();
- if let Some(delta) = NonZeroUsize::new(delta) {
- state.step(delta);
+ if delta > 0 {
+ state.step(NonZeroUsize::ONE, delta);
}
prev_page = page;
}
@@ -354,7 +354,7 @@ impl CounterState {
pub fn update(&mut self, vt: &mut Vt, update: CounterUpdate) -> SourceResult<()> {
match update {
CounterUpdate::Set(state) => *self = state,
- CounterUpdate::Step(level) => self.step(level),
+ CounterUpdate::Step(level) => self.step(level, 1),
CounterUpdate::Func(func) => {
*self = func
.call_vt(vt, self.0.iter().copied().map(Into::into))?
@@ -365,12 +365,12 @@ impl CounterState {
Ok(())
}
- /// Advance the top level number by the specified amount.
- pub fn step(&mut self, level: NonZeroUsize) {
+ /// Advance the number of the given level by the specified amount.
+ pub fn step(&mut self, level: NonZeroUsize, by: usize) {
let level = level.get();
if self.0.len() >= level {
- self.0[level - 1] = self.0[level - 1].saturating_add(1);
+ self.0[level - 1] = self.0[level - 1].saturating_add(by);
self.0.truncate(level);
}
diff --git a/tests/ref/meta/counter-page.png b/tests/ref/meta/counter-page.png
index 62f663cc..869718bc 100644
--- a/tests/ref/meta/counter-page.png
+++ b/tests/ref/meta/counter-page.png
Binary files differ
diff --git a/tests/typ/meta/counter-page.typ b/tests/typ/meta/counter-page.typ
index b45a26f3..54134b6e 100644
--- a/tests/typ/meta/counter-page.typ
+++ b/tests/typ/meta/counter-page.typ
@@ -1,6 +1,7 @@
// Test the page counter.
#set page(height: 50pt, margin: (bottom: 20pt, rest: 10pt))
+#lorem(12)
#set page(numbering: "(i)")
#lorem(6)
#pagebreak()