diff options
author | Marius <mariausol@gmail.com> | 2010-09-03 12:35:26 +0300 |
---|---|---|
committer | Marius <mariausol@gmail.com> | 2010-09-03 12:35:26 +0300 |
commit | 16895587e51f8243a7e4dc6185979894fb199d4f (patch) | |
tree | 923fe9fe4d34a11202e06a4258ba71bab6ccde8d /tex/context/base/lpdf-tag.lua | |
parent | 20da4ce347921be291c8804041bd8756e3bf1707 (diff) | |
download | context-16895587e51f8243a7e4dc6185979894fb199d4f.tar.gz |
beta 2010.09.03 11:05
Diffstat (limited to 'tex/context/base/lpdf-tag.lua')
-rw-r--r-- | tex/context/base/lpdf-tag.lua | 137 |
1 files changed, 24 insertions, 113 deletions
diff --git a/tex/context/base/lpdf-tag.lua b/tex/context/base/lpdf-tag.lua index 4e297b91c..d05e3e22f 100644 --- a/tex/context/base/lpdf-tag.lua +++ b/tex/context/base/lpdf-tag.lua @@ -57,110 +57,20 @@ local root = { pref = pdfreference(structure_ref), kids = structure_k local tree = { } local elements = { } local names = pdfarray() -local taglist = { } -- set later +local taglist = structures.tags.taglist +local usedlabels = structures.tags.labels +local properties = structures.tags.properties +local usedmapping = { } local colonsplitter = lpeg.splitat(":") local dashsplitter = lpeg.splitat("-") local add_ids = false -- true -local mapping = { - document = "Div", - - division = "Div", - paragraph = "P", - construct = "Span", - - structure = "Sect", - structuretitle = "H", - structurenumber = "H", - structurecontent = "Div", - - itemgroup = "L", - item = "Li", - itemtag = "Lbl", - itemcontent = "LBody", - - description = "Li", - descriptiontag = "Lbl", - descriptioncontent = "LBody", - - verbatimblock = "Code", - verbatim = "Code", - - register = "Div", - registersection = "Div", - registertag = "Span", - registerentries = "Div", - registerentry = "Span", - registersee = "Span", - registerpages = "Span", - registerpage = "Span", - - table = "Table", - tablerow = "TR", - tablecell = "TD", - tabulate = "Table", - tabulaterow = "TR", - tabulatecell = "TD", - - list = "TOC", - listitem = "TOCI", - listtag = "Lbl", - listcontent = "P", - listdata = "P", - listpage = "Reference", - - delimitedblock = "BlockQuote", - delimited = "Quote", - subsentence = "Span", - - float = "Div", - floatcaption = "Caption", - floattag = "Span", - floattext = "Span", - floatcontent = "P", - - image = "P", - mpgraphic = "P", - - formulaset = "Div", - formula = "Div", - formulatag = "Span", - formulacontent = "P", - subformula = "Div", - - link = "Link", - - math = "Div", - mn = "Span", - mi = "Span", - mo = "Span", - ms = "Span", - mrow = "Span", - msubsup = "Span", - msub = "Span", - msup = "Span", - merror = "Span", - munderover = "Span", - munder = "Span", - mover = "Span", - mtext = "Span", - mfrac = "Span", - mroot = "Span", - msqrt = "Span", -} - -local usedmapping = { } -local usedlabels = { } -function codeinjections.mapping() - return mapping -- future versions may provide a copy -end - -function codeinjections.maptag(original,target) - mapping[original] = target -end +--~ function codeinjections.maptag(original,target,kind) +--~ mapping[original] = { target, kind or "inline" } +--~ end local function finishstructure() if #structure_kids > 0 then @@ -186,7 +96,8 @@ local function finishstructure() local rolemap = pdfdictionary() for k, v in next, usedmapping do k = usedlabels[k] or k - rolemap[k] = pdfconstant(mapping[k] or "Span") -- or "Div" + local p = properties[k] + rolemap[k] = pdfconstant(p and p.pdf or "Span") -- or "Div" end local structuretree = pdfdictionary { Type = pdfconstant("StructTreeRoot"), @@ -240,15 +151,15 @@ local function makeelement(fulltag,parent) usedmapping[tg] = true tg = usedlabels[tg] or tg local d = pdfdictionary { - Type = pdf_struct_element, - S = pdfconstant(tg), - ID = (add_ids and fulltag) or nil, - T = detail and detail or nil, - P = parent.pref, - Pg = pageref, - K = pdfreference(r), ---~ Alt = " Who cares ", ---~ ActualText = " Hi Hans ", + Type = pdf_struct_element, + S = pdfconstant(tg), + ID = (add_ids and fulltag) or nil, + T = detail and detail or nil, + P = parent.pref, + Pg = pageref, + K = pdfreference(r), + -- Alt = " Who cares ", + -- ActualText = " Hi Hans ", } local s = pdfreference(pdfflushobject(d)) if add_ids then @@ -309,7 +220,7 @@ end -- -- -- -local level, last, ranges, range = 0, nil, { }, { } +local level, last, ranges, range = 0, nil, { }, nil local function collectranges(head,list) for n in traverse_nodes(head) do @@ -336,8 +247,9 @@ local function collectranges(head,list) end last = nil else - slide_nodelist(n.list) -- temporary hack till math gets slided (tracker item) - collectranges(n.list,n) + local nl = n.list + slide_nodelist(nl) -- temporary hack till math gets slided (tracker item) + collectranges(nl,n) end end end @@ -345,7 +257,7 @@ end function nodeinjections.addtags(head) -- no need to adapt head, as we always operate on lists - level, last, ranges, range = 0, nil, { }, { } + level, last, ranges, range = 0, nil, { }, nil initializepage() collectranges(head) if trace_tags then @@ -353,7 +265,7 @@ function nodeinjections.addtags(head) local range = ranges[i] local attr, id, start, stop = range[1], range[2], range[3], range[4] local tags = taglist[attr] - if tags then + if tags then -- not ok ... only first lines report_tags("%s => %s : %05i %s",tosequence(start,start),tosequence(stop,stop),attr,concat(tags," ")) end end @@ -386,7 +298,6 @@ function nodeinjections.addtags(head) end function codeinjections.enabletags(tg,lb) - taglist, usedlabels = tg, lb structures.tags.handler = nodeinjections.addtags tasks.enableaction("shipouts","structures.tags.handler") tasks.enableaction("shipouts","nodes.handlers.accessibility") |