[luatex] Turning a string into a list of nodes.
Paul Isambert
zappathustra at free.fr
Fri Nov 19 10:37:08 CET 2010
Thanks Patrick for your code.
Apparently we do the same things (except your code is simply better), so
there is no simple hard-coded function to do that. Which function I
think might be a good idea, especially if it can process real TeX input,
e.g. string_tolist("a\kern1em b"), perhaps with catcodes declared
beforehand. So I'm kind of feature-requesting here, yes, yes, can't deny.
Patrick, is it on purpose you don't set "n.prev = last"? Is it useless
or are you sure you'll simply never manipulate those node lists?
Thanks for lang.hyphenate() -- I realize there are areas of the manual I
still haven't laid an eye on.
Best,
Paul
Le 18/11/2010 22:49, Patrick Gundlach a écrit :
> Hi Paul,
>
> i do something like this (pseudo code):
>
> local match = unicode.utf8.match
>
> for s in string.utfvalues(str) do
> char = unicode.utf8.char(s)
> if match(char,"%s") and last and last.id == 10 then -- is it 10, the glue node??
> -- double whitespace, \relax
> elseif match(char,"%s") then -- ws
> n = node.new("glue")
> n.spec = node.new("glue_spec")
> n.spec.width = space -- calculated somewhere else
> n.spec.shrink = shrink
> n.spec.stretch = stretch
>
> if head then
> last.next = n
> else
> head = n
> end
> last = n
>
> else
> n = node.new("glyph")
> n.font = ... (set somewhere else)
> n.char = s
> n.lang = 0
> n.left = tex.lefthyphenmin
> n.right = tex.righthyphenmin
>
> if head then
> last.next = n
> else
> head = n
> end
> last = n
> end
> end
>
>
> and then I use node.kerning() for kerning and lang.hyphenate() for inserting disc nodes.
>
>
> Patrick
>
>
More information about the luatex
mailing list