diff options
Diffstat (limited to 'tex/context/base/lpdf-ano.lua')
-rw-r--r-- | tex/context/base/lpdf-ano.lua | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/tex/context/base/lpdf-ano.lua b/tex/context/base/lpdf-ano.lua index 8384313c2..d62fb9e5f 100644 --- a/tex/context/base/lpdf-ano.lua +++ b/tex/context/base/lpdf-ano.lua @@ -1063,32 +1063,39 @@ local function build(levels,start,parent,method,nested) local level = current.level local title = current.title local reference = current.reference - local block = reference.block local opened = current.opened local reftype = type(reference) + local block = nil local variant = "unknown" if reftype == "table" then -- we're okay - variant = "list" + variant = "list" + block = reference.block elseif reftype == "string" then local resolved = references.identify("",reference) local realpage = resolved and structures.references.setreferencerealpage(resolved) or 0 if realpage > 0 then - variant = "realpage" - realpage = realpage + variant = "realpage" + realpage = realpage + reference = structures.pages.collected[realpage] + block = reference and reference.block end elseif reftype == "number" then if reference > 0 then - variant = "realpage" - realpage = reference + variant = "realpage" + realpage = reference + reference = structures.pages.collected[realpage] + block = reference and reference.block end else -- error end + current.block = block if variant == "unknown" then -- error, ignore i = i + 1 - elseif (level < startlevel) or (i > 1 and block ~= levels[i-1].reference.block) then + -- elseif (level < startlevel) or (i > 1 and block ~= levels[i-1].reference.block) then + elseif (level < startlevel) or (i > 1 and block ~= levels[i-1].block) then if nested then -- could be an option but otherwise we quit too soon if entry then pdfflushobject(child,entry) @@ -1103,7 +1110,7 @@ local function build(levels,start,parent,method,nested) end if level == startlevel then if trace_bookmarks then - report_bookmark("%3i %w%s %s",reference.realpage,(level-1)*2,(opened and "+") or "-",title) + report_bookmark("%3i %w%s %s",realpage,(level-1)*2,(opened and "+") or "-",title) end local prev = child child = pdfreserveobject() @@ -1116,6 +1123,8 @@ local function build(levels,start,parent,method,nested) action = somedestination(reference.internal,reference.internal,reference.realpage) elseif variant == "realpage" then action = pagereferences[realpage] + else + -- hm, what to do end entry = pdfdictionary { Title = pdfunicode(title), |