[luatex] Getting macro expansions from Lua

Reiner Pope reiner.pope at gmail.com
Wed Jun 1 17:01:12 CEST 2011


Hi,

I'm trying to expand TeX macros from within Lua code, but I can't work 
out how to do this.

I would like to write code like this

\def\A{1}
\directlua{
   t = token.create("A")
   toks = tex.get_expansion(t)  % the tex.get_expansion function is what 
I want
   % toks should consist of the token '1'.
   }

\bye

My motivation is that I want to access LaTeX's referencing information 
from Lua. To find the label number for, say, 'equationone', I need to 
look in the macro \r at equationone.

It is possible to achieve roughly what I want by calling out of Lua and 
back into it, but it's ugly:

(file test.tex)
\def\A{2}
\directlua{
   s = "A"
   dofile('run.lua')
}
\bye

(file test.lua)
tex.sprint('\\directlua{ t = "\\' .. s .. '"\
     if t == "1" then tex.sprint("got 1") else tex.sprint("not 1") end\
  }')

(This will print "got 1" if the first line is \def\A{1}, and will print 
"not 1" otherwise.)

What I'm looking for is a way to do this without nesting 
\directlua{tex.sprint("\directlua{...}")}.

Cheers,
Reiner


More information about the luatex mailing list