On 5/29/2024 8:58 PM, Linas Stonys wrote:
Hi,
I'm sure that for lua gurus it is known behavior that user_defined whatsit
clears the \lastskip but for me it was a big surprise.

little example:
aa
\vskip11.1pt
\showthe\lastskip
\directlua{%
   local x = node.new('whatsit', 'user_defined')
   x.type=115
   x.value="TEXT"
   node.write(x)
}%
\showthe\lastskip
\bye

log:
 > 11.1pt.
l.4 \showthe\lastskip

?
 > 0.0pt.
l.13 \showthe\lastskip

I just accidentally noticed that I messed up output trying to markup document.
I was sure that luatex will step over these whatsits.

Why? We also have \lastpenalty etc and if would become confusing if last means "last seen" instead of last on the list. It's not a register but a 'reference to a stored state'.

You could check the lastskip before you write the whatsit, maybe backtrack i.e. remove it, insert the whatsit and then reinsert the glue node or otherwise insert the whatsit before the last node if it's a skip (you can mess with the current list)

Is there another way to write user_defined whatsits directly without effecting \lastskip? My goal is to mark text in DVI mode with user_defined whatsits and on the  shipout turn them
to postscript \special's for accessible pdf
I'd probably try to insert before the last glue in a list but it all depends one the macro package and what it does with skips etc in various places.

Hans


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

_______________________________________________
dev-luatex mailing list -- dev-luatex@ntg.nl
To unsubscribe send an email to dev-luatex-le...@ntg.nl

Reply via email to