summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/lpdf-tag.lua
diff options
context:
space:
mode:
authorHans Hagen <pragma@wxs.nl>2018-07-25 20:24:04 +0200
committerContext Git Mirror Bot <phg@phi-gamma.net>2018-07-25 20:24:04 +0200
commit669436bb34437aee17f1823836cbbb16c570a505 (patch)
tree3d8c61e22805ff719007c10a44a8de0417211b00 /tex/context/base/mkiv/lpdf-tag.lua
parentdeab0bfe7f4be57121779e93bf291e518fda7cf3 (diff)
downloadcontext-669436bb34437aee17f1823836cbbb16c570a505.tar.gz
2018-07-25 19:49:00
Diffstat (limited to 'tex/context/base/mkiv/lpdf-tag.lua')
-rw-r--r--tex/context/base/mkiv/lpdf-tag.lua33
1 files changed, 27 insertions, 6 deletions
diff --git a/tex/context/base/mkiv/lpdf-tag.lua b/tex/context/base/mkiv/lpdf-tag.lua
index 3eb9363e5..534519c8a 100644
--- a/tex/context/base/mkiv/lpdf-tag.lua
+++ b/tex/context/base/mkiv/lpdf-tag.lua
@@ -13,7 +13,8 @@ local settings_to_hash = utilities.parsers.settings_to_hash
local sortedhash = table.sortedhash
local formatters = string.formatters
-local trace_tags = false trackers.register("structures.tags", function(v) trace_tags = v end)
+local trace_tags = false trackers.register("structures.tags", function(v) trace_tags = v end)
+local trace_info = false trackers.register("structures.tags.info", function(v) trace_info = v end)
local report_tags = logs.reporter("backend","tags")
@@ -316,6 +317,7 @@ end
-- no need to adapt head, as we always operate on lists
local EMCliteral = nil
+local visualize = nil
function nodeinjections.addtags(head)
@@ -381,22 +383,30 @@ function nodeinjections.addtags(head)
local noftop = 0
- local function inject(start,stop,list,literal)
+ local function inject(start,stop,list,literal,left,right)
local prev = getprev(start)
if prev then
setlink(prev,literal)
end
- setlink(literal,start)
+ if left then
+ setlink(literal,left,start)
+ else
+ setlink(literal,start)
+ end
if list and getlist(list) == start then
setlist(list,literal)
end
local literal = copy_node(EMCliteral)
-- use insert instead:
- local next = getnext(stop)
+ local next = getnext(stop)
if next then
setlink(literal,next)
end
- setlink(stop,literal)
+ if right then
+ setlink(stop,right,literal)
+ else
+ setlink(stop,literal)
+ end
end
for i=1,#ranges do
@@ -453,7 +463,18 @@ function nodeinjections.addtags(head)
end
if literal then
- inject(start,stop,list,literal)
+ local left,right
+ if trace_info then
+ local name = specification.tagname
+ if name then
+ if not visualize then
+ visualize = nodes.visualizers.register("tags")
+ end
+ left = visualize(name)
+ right = visualize()
+ end
+ end
+ inject(start,stop,list,literal,left,right)
end
top = taglist