summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-num.lua
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-num.lua')
-rw-r--r--tex/context/base/strc-num.lua32
1 files changed, 18 insertions, 14 deletions
diff --git a/tex/context/base/strc-num.lua b/tex/context/base/strc-num.lua
index f42b11b32..72cd75ecf 100644
--- a/tex/context/base/strc-num.lua
+++ b/tex/context/base/strc-num.lua
@@ -27,8 +27,8 @@ local variables = interfaces.variables
-- state: start stop none reset
-counters.specials = counters.specials or { }
-local counterspecials = counters.specials
+counters.specials = counters.specials or { }
+local counterspecials = counters.specials
local counterranges, tbs = { }, 0
@@ -121,13 +121,13 @@ local function allocate(name,i)
local cd = counterdata[name]
if not cd then
cd = {
- level = 1,
---~ block = "", -- todo
+ level = 1,
+ -- block = "", -- todo
numbers = nil,
- state = variables.start, -- true
- data = { }
+ state = variables.start, -- true
+ data = { }
}
- tobesaved[name] = { }
+ tobesaved[name] = { }
counterdata[name] = cd
end
cd = cd.data
@@ -135,13 +135,12 @@ local function allocate(name,i)
if not ci then
ci = {
number = 0,
- start = 0,
- saved = 0,
- step = 1,
- range = 1,
+ start = 0,
+ saved = 0,
+ step = 1,
+ range = 1,
offset = false,
- -- via metatable: last, first, and for tracing:
- stop = 0,
+ stop = 0, -- via metatable: last, first, stop only for tracing
}
setmetatable(ci, { __index = function(t,s) return constructor(t,s,name,i) end })
cd[i] = ci
@@ -340,7 +339,7 @@ function counters.setown(name,n,value)
elseif level > 0 then
check(name,d,n+1)
elseif level == 0 then
- -- happens elsewhere
+ -- happens elsewhere, check this for block
end
synchronize(name,d)
end
@@ -378,10 +377,15 @@ function counters.add(name,n,delta)
if cd and cd.state == variables.start then
local data = cd.data
local d = allocate(name,n)
+-- table.print(cd)
d.number = (d.number or d.start or 0) + delta*(d.step or 0)
local level = cd.level
+-- print(name,n,level)
if not level or level == -1 then
-- -1 is signal that we reset manually
+ elseif level == -2 then
+ -- -2 is signal that we work per text
+ check(name,data,n+1)
elseif level > 0 then
-- within countergroup
check(name,data,n+1)