[Dev-luatex] How to insert at start of hlist/vlist?
oberdiek at uni-freiburg.de
Sat Dec 8 03:16:25 CET 2007
On Sat, Dec 08, 2007 at 12:31:59AM +0100, Hans Hagen wrote:
> Heiko Oberdiek wrote:
> > Hello,
> > I have some trouble to insert something at the start
> > of a list.
> weird message indeed; this works
> local hlist = tex.box
> local pdf_literal = node.new(8,8)% \pdfliteral
> pdf_literal.mode = 2 % direct
> pdf_literal.data = "1 0 0 rg 1 0 0 RG"
> pdf_literal.next = hlist.list
> hlist.list = pdf_literal
What about "prev"?
* insert_before seems to set this entry, too.
* I have seen, the head of the list (variable "hlist/tex.box") has
a node "prev" with id "temp" in the example (I have also
seen "attribute_list", "if_stack" and the expected "nil").
Is this a bug not being "nil"?
Or must the new head node inherit the prev entry from the
old head node?
> current assigning to a box (or operating on box related lists are
> somewhat tricky, internal invisible pointers and such; this interface
> will probably change a bit; it helps to copy the list, work on the copy
> and hpack the result
The there is the problem with freeing the old node list.
The internal invisible pointers remain invisible, thus it is unknown
whether it is safe to call node.free().
What about global/local box contents?
Or is the copy strategy more safe, if two box registers are used?
% box 1 is void and takes the result
local hlist = node.copy(tex.box)
% manipulating hlist
tex.box = hlist
But insert_before also don't work on the copied list.
And I would want to avoid copying the whole list, because
it would mean copying the whole document:
I am experimenting with color support based on an attribute.
At some time the shipout material needs transforming to add
pdf_literals with color setting. BTW, I haven't found a
direct callback function for this (page shipout/xform generation).
The way via a box register requires catching the shipout box
at TeX level (package atbegshi). But \pdfxform can't catched
in an easy and reliable way.
Heiko <oberdiek at uni-freiburg.de>
More information about the dev-luatex