[luatex] node.rangedimensions on vertical lists

Esger Renkema esgerrenkema at gmail.com
Tue Oct 6 21:59:55 CEST 2020


Dear list,

The function node.rangedimensions(), when applied to vertical lists, 
includes contributions of (vertical) glue nodes in the (horizontal) 
width. A simple example:

-------------------------------------------------------------
\setbox0 = \vbox{
     \vskip 10sp
     \hrule width 1sp height 2sp depth 3sp }
\directlua{
     texio.write_nl (string.format(
         '\csstring\%s, \csstring\%s, \csstring\%s',
         node.rangedimensions(tex.box[0], tex.box[0].head))) }
-------------------------------------------------------------

-------------------------------------------------------------
This is LuaTeX, Version 1.12.0 (TeX Live 2020/Debian)
  restricted system commands enabled.
(./bug.tex
11, 2, 3)
warning  (pdf backend): no pages of output.
Transcript written on bug.log.
-------------------------------------------------------------

where the fourth line should be 1, 12, 3.

The cause of this problem seems to be the function natural_sizes() 
defined in packaging.c; it looks like it was written with only 
horizontal lists in mind.

This assumption also causes trouble with horizontal rules:

-------------------------------------------------------------
\setbox0 = \vbox{
     \hrule height 1sp width 2sp
     \hrule height 1sp }
\setbox1 = \vbox{
     \hrule height 1sp width 2sp
     \hrule height 1sp width 2sp }
\directlua{
     texio.write_nl (string.format(
         '\csstring\%s, \csstring\%s, \csstring\%s',
         node.rangedimensions(tex.box[0], tex.box[0].head)))
     texio.write_nl (string.format(
         '\csstring\%s, \csstring\%s, \csstring\%s',
         node.rangedimensions(tex.box[1], tex.box[1].head))) }
-------------------------------------------------------------

-------------------------------------------------------------
This is LuaTeX, Version 1.12.0 (TeX Live 2020/Debian)
  restricted system commands enabled.
(./bug.tex
-1073741822, 1, 0
4, 1, 0)
warning  (pdf backend): no pages of output.
Transcript written on bug.log.
-------------------------------------------------------------

where the reported numbers should in both cases be 2, 2, 0.

Regards,
Esger Renkema




More information about the luatex mailing list.