Can't manipulate glue added by tex.preparelinebreak
Hi Hans, The new tex.preparelinebreak is great (thanks again), but I can't seem to figure out how to manipulate the parfillskip nodes that it adds. MWE: \newbox\testbox \startluacode function test(head) if head.id ~= node.id "par" then return head end new_head = node.copylist(head) tex.preparelinebreak(new_head) local parfillskip = node.tail(new_head) inspect(parfillskip) -- Confirm that this really is a parfillskip parfillskip.stretchorder = 0 parfillskip.stretch = 0 local broken = tex.linebreak(new_head) tex.setbox("global", "testbox", broken) return head end \stopluacode \starttext {\dorecurse{209}{Hello }\par}\page {\parfillskip=0pt\dorecurse{209}{Hello }\par}\page {\ctxlua{nodes.tasks.appendaction("processors", "after", "test")} \dorecurse{209}{Hello }\par}\page \box\testbox \stoptext I would expect that pages 1 and 3 would be identical, and that pages 2 and 4 would be identical. However, page 4 is the same as pages 1 and 3, which isn't what I'd expect. I can do a similar idea in LuaTeX/MkIV and get the expected results, so I'm not too sure what I'm doing wrong here. I'm probably just missing something obvious, but I'm not too sure what. Any ideas? Thanks, -- Max
On 7/26/2022 8:18 AM, Max Chernoff via ntg-context wrote:
Hi Hans,
The new tex.preparelinebreak is great (thanks again), but I can't seem to figure out how to manipulate the parfillskip nodes that it adds.
MWE:
\newbox\testbox
\startluacode function test(head) if head.id ~= node.id "par" then return head end
new_head = node.copylist(head) tex.preparelinebreak(new_head)
local parfillskip = node.tail(new_head) inspect(parfillskip) -- Confirm that this really is a parfillskip parfillskip.stretchorder = 0 parfillskip.stretch = 0
local broken = tex.linebreak(new_head) tex.setbox("global", "testbox", broken)
return head end \stopluacode
\starttext {\dorecurse{209}{Hello }\par}\page
{\parfillskip=0pt\dorecurse{209}{Hello }\par}\page
{\ctxlua{nodes.tasks.appendaction("processors", "after", "test")} \dorecurse{209}{Hello }\par}\page
\box\testbox \stoptext
I would expect that pages 1 and 3 would be identical, and that pages 2 and 4 would be identical. However, page 4 is the same as pages 1 and 3, which isn't what I'd expect. I can do a similar idea in LuaTeX/MkIV and get the expected results, so I'm not too sure what I'm doing wrong here. I'm probably just missing something obvious, but I'm not too sure what. Any ideas? looks like i don't update something, i'll fix it (probably bin later today)
btw, you can do this: local h, t, pil, pir, pfl, pfr = tex.preparelinebreak(new_head) inspect(pfr) pfr.stretchorder = 0 pfr.stretch = 0 as well as use tex.show(broken) to see the result 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 -----------------------------------------------------------------
looks like i don't update something, i'll fix it (probably bin later today)
new upload (see earlier mail for rest)
Works great! Thanks!
btw, you can do this:
local h, t, pil, pir, pfl, pfr = tex.preparelinebreak(new_head) inspect(pfr) pfr.stretchorder = 0 pfr.stretch = 0
Ah, that's quite convenient. I'm still supporting LuaTeX, so unfortunately I'm somewhat limited with which helpers I can take advantage of.
as well as use
tex.show(broken)
to see the result
That will be really nice for debugging. I've either been storing boxes and typesetting them later (like shown earlier) or using node.traverse + inspect. This will be much nicer to use. Thanks, -- Max
On 7/28/2022 9:03 AM, Max Chernoff via ntg-context wrote:
That will be really nice for debugging. I've either been storing boxes and typesetting them later (like shown earlier) or using node.traverse + inspect. This will be much nicer to use. when you set
\tracingnodes to a positive value (1, 2) you'll also see node numbers 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 -----------------------------------------------------------------
On 7/26/2022 8:18 AM, Max Chernoff via ntg-context wrote:
The new tex.preparelinebreak is great (thanks again), but I can't seem to figure out how to manipulate the parfillskip nodes that it adds. new upload (see earlier mail for rest)
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 -----------------------------------------------------------------
participants (3)
-
Hans Hagen
-
Hans Hagen
-
Max Chernoff