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

Reply via email to