Thanks Max,
I'm thinking the same to add attribute and property with corresponding
tags and then
add whatsits on the 255 box shipout. I just need to think about
discardable items.
If one wants to mark up tex sources for xml or tagged pdf a common issue
how to safely
mark start and end of semantic text without effecting output.
For example if there would be few primitives which could add an
attribute or/and properties
to next (yet to be created) non discardable item like
\luaAddFeaturesNodeNext {{attr=1, properties={"<section>}}}
\section{foo}
\luaAddFeaturesNodePrev{{attr=1, properties={"</section>}}}
It could save a lot of headache.
Of course this is not an easy task because of page breaks.
You can set an attribute on the previous node, then add the node itself
in pre_output_filter:
\directlua{%
user_nodes = {}
% Better to use luatexbase.new_attribute and luatexbase.add_to_callback
attribute_number = 1234
% "pre_shipout_filter" is better if you're using LaTeX or OpTeX
callback.register("pre_output_filter", function(head)
% Better if this recurses through any nested lists
local n = head
while n do
local attr
attr, n = node.find_attribute(n.next, attribute_number)
if not n then break end
head, n = node.insert_after(head, n, user_nodes[attr])
end
return head
end)
}
aa
\vskip11.1pt
\showthe\lastskip
\directlua{%
% I'm using a rule to make the effect obvious
local x = node.new("rule")
x.width = 655360
x.height = 655360
x.depth = 0
table.insert(user_nodes, x)
node.set_attribute(
tex.nest[tex.nest.ptr].tail,
attribute_number,
\luaescapestring{#}user_nodes
)
}%
\showthe\lastskip
bb
\bye
It's a little risky to mess with tex.nest.tail, but just setting an
attribute should be mostly safe.
Thanks,
-- Max
_______________________________________________
dev-luatex mailing list -- dev-luatex@ntg.nl
To unsubscribe send an email to dev-luatex-le...@ntg.nl