[Dev-luatex] Collected notes

Hans Hagen pragma at wxs.nl
Tue Sep 25 14:59:59 CEST 2007

Jonathan Sauer wrote:
> Hello,
>>> -	When setting a \toks register in Lua using tex.toks['foo'] =
>>> 'bar' et.al., what catcodetable is used? From looking inside
>>> luatex.web, I would guess that, since str_toks is used, all 
>>> characters get catcode 12, except for spaces, which get catcode 10.
>> Correct. It is one of the first things I wrote, and it definately
>> needs updating. I now believe the toks array should accept and return
>> token list tables (instead of lua strings), and there should be helper
>> functions to_string() and to_tokenlist() for going back and forth.
>> That needs a bit of (not-yet-done) programming, but it is not hard at
>> all.
> I'm wondering how this would affect performance. How costly is the
> conversion from a string to a table?


input -> texscanner -> internal tex structure

with callback or toks or ...:

input -> texscanner -> callback that gets token being table -> returns 
table (or not) -> internal tex structure

so, in the tokentable case there are two conversions (+ allocation and 
garbage collection for the token table) which is way slower

> And what about tex.print? Since it creates/writes tokens as well, will
> it be changed to accept token list tables, too? (at any rate, I think
> both should accept the same parameter type)

no, that will be string based; pushing strings into texs scanner is 
currently pretty efficient and te need to convert them to tokens first 
would make the interface clumsy; so tex.tprint (token print) would be a 
natural candidate then (one argument, a table of tokens)

in practice tex.sprint is used more often than pushing token tables into 


                                           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 dev-luatex mailing list