[NTG-context] missing mails

Max Chernoff mseven at telus.net
Fri Jun 24 08:28:50 CEST 2022


Hi Hans,

> So, if there has been serious issues not resolved (the last year) let me 
> know. 

I've been having two issues with parfillskip nodes in LMTX that I
haven't been able to figure out myself. Neither of them are particularly
serious, but the first one is quite annoying.

(The below is mostly copied from an earlier email, "Callbacks (and
nodes) in LuaMetaTeX")

1.  In LMTX, calling "tex.linebreak" produces a
     
         luatex warning  > tex: left parfill skip is gone

     warning. I don't get this warning in Plain LuaTeX, LuaLaTeX, or
     MkIV, so I think that it's specific to LuaMetaTeX. The LuaMetaTeX
     manual hardly mentions "left parfill skip"/"parfillleftskip", so I'm
     not too sure what to do to avoid this warning.

     Any call to "tex.linebreak" seems to produce this warning. Here's a
     minimal example:

         \startluacode
             function test(head)
                 tex.linebreak(node.copylist(head))
         
                 return head
             end
         
             nodes.tasks.appendaction("processors", "after", "test")
         \stopluacode
         
         \starttext
             Hello!
         \stoptext

     And a less minimal example:

         % From CTAN or modules.contextgarden.net
         \usemodule[lua-widow-control]

         \starttext
             \dorecurse{10}{\samplefile{knuth}}
         \stoptext

     With the lwc module, I call "tex.linebreak" twice for every
     paragraph, so these warning messages get quite annoying. The log
     file for compiling the lwc manual

         https://github.com/gucci-on-fleek/lua-widow-control/runs/6946059955?check_suite_focus=true#check-step-9

     is 22000 lines long, most of which are "left parfill skip" warnings.

2.  The LuaMetaTeX manual says that "pre_linebreak_filter" is called
     _after_ the parfillskip glue has been added, but this doesn't seem
     to be the case. With LuaLaTeX/Plain LuaTeX/MkIV, this is true, but
     the node list passed to the callback in MkXL is missing the
     parfillskip.

     This code:

         \startluacode
             function test(head)
                 local last = node.slide(head)
         
                 print "START"
                 for i=1,3 do
                     print(last)
                     print(
                         node.type(last.id),
                         node.subtypes(last.id)[last.subtype],
                         last.width,
                         last.stretchorder,
                         last.stretch
                     )
         
                     last = last.prev
                 end
                 print "STOP"
         
                 return head
             end
         
             nodes.tasks.appendaction("processors", "after", "test")
         \stopluacode
         
         \starttext
             Hello!
         \stoptext

     with MkXL produces:

         START
         <node :   2521 <=   2258 =>    nil : glue spaceskip>
         glue    spaceskip       341648  0       384354
         <node :   2509 <=   2521 =>   2258 : glyph unset>
         glyph   nil     213792  nil     nil
         <node :   2497 <=   2509 =>   2521 : glyph unset>
         glyph   nil     385140  nil     nil
         STOP
         START
         <node :   2611 <=   2357 =>    nil : glue userskip>
         glue    userskip        0       2       65536
         <node :   2274 <=   2611 =>   2357 : glyph unset>
         glyph   nil     385140  nil     nil
         <node :   2239 <=   2274 =>   2611 : rule strut>
         rule    strut   0       nil     nil
         STOP

     but with MkIV produces:

         START
         <node   1239 <   1041 >    nil : glue 15>
         glue    parfillskip     0       nil     65536
         <node   1034 <   1239 >   1041 : penalty 2>
         penalty linepenalty     nil     nil     nil
         <node   1027 <   1034 >   1239 : glyph 256>
         glyph   nil     213792  nil     nil
         STOP
         START
         <node   1375 <   1479 >    nil : glue 0>
         glue    userskip        0       nil     65536
         <node   1457 <   1375 >   1479 : glyph 256>
         glyph   nil     385140  nil     nil
         <node   1444 <   1457 >   1375 : hlist 2>
         hlist   box     0       nil     nil
         STOP

     This problem isn't very serious at all since I can work around it
     fairly easily, but I'm including it since it's so closely related
     to the issue above.

I _think_ that both of these are engine bugs, but I may just misreading
the docs or missing something completely. Please let me know if you have
any solutions.

Thanks,
-- Max


More information about the ntg-context mailing list