summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua')
-rw-r--r--Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua41
1 files changed, 33 insertions, 8 deletions
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
index c0262626181..577afedaa11 100644
--- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
+++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
@@ -1,5 +1,5 @@
--- Packageversion: 0.50
--- Packagedate: 2019/01/04
+-- Packageversion: 0.60
+-- Packagedate: 2019/03/20
-- tagpdf.lua
-- Ulrike Fischer
@@ -52,8 +52,8 @@ functions
uftag.trace.showspaces : boolean
--]]
-local mctypeattributeid = luatexbase.registernumber ("g__uftag_mc_type_attr")
-local mccntattributeid = luatexbase.registernumber ("g__uftag_mc_cnt_attr")
+local mctypeattributeid = luatexbase.registernumber ("l__uftag_mc_type_attr")
+local mccntattributeid = luatexbase.registernumber ("l__uftag_mc_cnt_attr")
local iwspaceattributeid = luatexbase.registernumber ("g__uftag_interwordspace_attr")
local iwfontattributeid = luatexbase.registernumber ("g__uftag_interwordfont_attr")
@@ -184,6 +184,13 @@ local function __uftag_mark_spaces (head)
if uftag.trace.showspaces then
__uftag_show_spacemark (head,glyph)
end
+ elseif glyph.next and (glyph.next.id==KERN) and not inside_math then
+ local kern = glyph.next
+ if kern.next and (kern.next.id== GLUE) and (kern.next.width >0)
+ then
+ nodesetattribute(kern.next,iwspaceattributeid,1)
+ nodesetattribute(kern.next,iwfontattributeid,glyph.font)
+ end
end
elseif id == PENALTY then
local glyph = n
@@ -297,7 +304,8 @@ function uftag.func.mark_page_elements (box,mcpagecnt,mccntprev,mcopen,name,mcty
end
elseif n.id == LOCAL_PAR then -- local_par is ignored
elseif n.id == PENALTY then -- penalty is ignored
- elseif n.id == KERN then -- kern is ignored
+ elseif n.id == KERN then -- kern is ignored
+ uftag.trace.log ("SUBTYPE KERN ".. n.subtype,3)
else
-- math is currently only logged.
-- we could mark the whole as math
@@ -504,10 +512,24 @@ function uftag.func.store_mc_kid (mcnum,kid,page)
tableinsert(uftag.mc[mcnum]["kids"], kidtable )
end
-function uftag.func.mc_insert_kids (mcnum)
+function uftag.func.mc_num_of_kids (mcnum)
+ local num = 0
+ if uftag.mc[mcnum] and uftag.mc[mcnum]["kids"] then
+ texio.write_nl("XXXXXXXXXXXXXXXXX")
+ texio.write_nl(table.serialize(uftag.mc[mcnum]["kids"]))
+ num = #uftag.mc[mcnum]["kids"]
+ end
+ uftag.trace.log ("MC" .. mcnum .. "has " .. num .. "KIDS",4)
+ return num
+end
+
+function uftag.func.mc_insert_kids (mcnum,single)
if uftag.mc[mcnum] then
uftag.trace.log("MC-KIDS test " .. mcnum,4)
if uftag.mc[mcnum]["kids"] then
+ if #uftag.mc[mcnum]["kids"] > 1 and single==1 then
+ tex.sprint("[")
+ end
for i,kidstable in ipairs( uftag.mc[mcnum]["kids"] ) do
local kidnum = kidstable["kid"]
local kidpage = kidstable["page"]
@@ -515,6 +537,9 @@ function uftag.func.mc_insert_kids (mcnum)
uftag.trace.log("MC" .. mcnum .. " insert KID " ..i.. " with num " .. kidnum .. " on page " .. kidpage.."/"..kidpageobjnum,3)
tex.sprint(catlatex,"<</Type /MCR /Pg "..kidpageobjnum .. " 0 R /MCID "..kidnum.. ">> " )
end
+ if #uftag.mc[mcnum]["kids"] > 1 and single==1 then
+ tex.sprint("]")
+ end
else
uftag.trace.log("WARN! MC"..mcnum.." has no kids",0)
end
@@ -561,7 +586,7 @@ function uftag.func.fill_parent_tree_line (page)
mcchunks=#uftag.page[page]
uftag.trace.log("PAGETREE PAGE "..page.." has "..mcchunks.."+1 Elements ",3)
for i=0,mcchunks do
- uftag.trace.log("PAGETREE CHUNKS "..uftag.page[page][i],0)
+ uftag.trace.log("PAGETREE CHUNKS "..uftag.page[page][i],3)
end
if mcchunks == 0 then
-- only one chunk so no need for an array
@@ -576,7 +601,7 @@ function uftag.func.fill_parent_tree_line (page)
numsentry = pdfpage .. " ["
for i=0,mcchunks do
local mcnum = uftag.page[page][i]
- local structnum = uftag.mc[mcnum]["parent"]
+ local structnum = uftag.mc[mcnum]["parent"] or 0
local propname = "g__uftag_struct_"..structnum.."_prop"
local objnum = uftag.tables[propname]["objnum"] or "XXXX"
numsentry = numsentry .. " ".. objnum .. " 0 R"