Difference between revisions of "Traversing TeX nodes"
From LuaTeXWiki
(Copied from the old bluwiki.com luatex wiki (is also licensed under the terms of the GNU FDL)) |
m (Restoring character with garbled encoding) |
||
(2 intermediate revisions by 2 users not shown) | |||
Line 35: | Line 35: | ||
<pre> | <pre> | ||
\font\x=omlgc | \font\x=omlgc | ||
− | \x | + | \x blε bla bla bla |
</pre> | </pre> | ||
Latest revision as of 13:02, 19 May 2013
Traversing TeX nodes[edit]
Put this code at the beginning of any TeX file:
\directlua{ local glyph = node.id('glyph') local hlist = node.id('hlist') local vlist = node.id('vlist') function gothru(h,prof) for t in node.traverse(h) do texio.write_nl(string.rep("...",prof) .. 'NODE type=' .. node.type(t.id) .. ' subtype=' .. t.subtype ) if t.id == hlist or t.id == vlist then texio.write(' w=' .. t.width .. ' h=' .. t.height .. ' d=' .. t.depth .. ' s=' .. t.shift ) gothru(t.list,prof+1) end if t.id == glyph then texio.write(' font=' .. t.font .. ' char=' .. t.char .. ' width=' .. font.fonts[t.font].characters[t.char]['width']) end end end callback.register('pre_linebreak_filter', function(h) gothru(h,0) return true end ) }
It will display a list of all nodes on the terminal and in the log file. For example, for the document
\font\x=omlgc \x blε bla bla bla
which contains a Greek letter (in UTF-8), you will get:
This is luaTeX, Version 3.141592-snapshot-2007062922 (Web2C 7.5.6) ( NODE type=whatsit subtype=6 NODE type=hlist subtype=0 NODE type=glyph subtype=0 font=51 char=98 NODE type=glyph subtype=0 font=51 char=108 NODE type=glyph subtype=0 font=51 char=941 NODE type=glue subtype=0 NODE type=glyph subtype=0 font=51 char=98 NODE type=glyph subtype=0 font=51 char=108 NODE type=glyph subtype=0 font=51 char=97 NODE type=glue subtype=0 NODE type=glyph subtype=0 font=51 char=98 NODE type=glyph subtype=0 font=51 char=108 NODE type=glyph subtype=0 font=51 char=97 NODE type=glue subtype=0 NODE type=glyph subtype=0 font=51 char=98 NODE type=glyph subtype=0 font=51 char=108 NODE type=glyph subtype=0 font=51 char=97 NODE type=glue subtype=0 Underfull \hbox (badness 10000) in paragraph at lines 14--15 [1] )
Be aware of the fact that the nodes will be created only if the glyph requested indeed exists in the font.
Yannis.Haralambous 02:52, 4 July 2007 (EDT)