[luatex] lua equivalent of vbox...ht

Hans Hagen pragma at wxs.nl
Fri Sep 18 14:50:51 CEST 2009


Patrick Gundlach wrote:
> Hello Luigi, all,
> 
>> It's not correct -- I must set head.width = 1451240 by try and error
> 
> I'll wait for Taco to get back from vacation :)

Hi Patrick and Luigi ..

(as i'm not monitoring this list constantly - as it's mostly latex 
issues - next ask such things on the context list)

The kind of things you're asking for (basically doing tex things at the 
lua end) are on the agenda but for later once the whoile machinery is 
opened up and it does not make much sense to run ahead of the agenda

we need to sort out backend issues, directionality, more control over 
the par and pagebuilder etc and as soon as something is opened up it's 
likely that there is a function that does similar things at the lua end 
(hpack is an example); ideally one would like to have expansion and 
typesetiing at the lua end but we're not yet there

anyhow, here's an example ...

\starttext

\startluacode
     function mylist(str,fontid,spacing)
         local head, prev = nil, nil
         for s in string.utfvalues(str) do
             local next
              if spacing and s == 32 then
                 next = node.new(node.id("glue"))
                 next.spec = node.new(node.id("glue_spec"))
                 next.spec.width = spacing or 64*1024*10
             else
                 next = node.new(node.id("glyph"))
                 next.char = s
                 next.font = fontid or 1
             end
             if not head then
                 head = next
             else
                 prev.next = next
                 next.prev = prev
             end
             prev = next
         end
         return head
     end
     function myhpack(str,fontid,spacing)
         return node.hpack(mylist(str,fontid,spacing))
     end
     function myvpack(str,fontid,spacing)
         -- vpack is just a hack, and a proper implentation is on the agenda
         -- as it needs more info etc than currently available
     end
     node.write(myhpack("Hello World!"))
     node.write(myhpack("Hello World!",1,100*1024*10))

\stopluacode

\stoptext

Don't expect vpack to work before the par builder is opened up (all 
those parameters).

I'll start adding some examples to the context mkiv code base.

Hans




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


More information about the luatex mailing list