[Dev-luatex] The explanation of \directlua in the manual

Javier Múgica de Rivera javieraritz.ribadeo at gmail.com
Tue Oct 11 13:53:48 CEST 2011


When I read this from the manual a long time ago:

The \directlua command is expandable: the results of the LUA code
become effective immediately.

I could not make sense of it, and actually cannot up to day. What are
"the results of the LUA code"? What does "become effective" mean? Now
I now the answers to those questions but not because of the
explanation given there. The example provided does not help much
either. Note that this comes very soon in the manual. I propose the
following wording:

The \directlua command is expandable. Since it passes Lua code to the
Lua interpreter its expansion from the TeX viewpoint is usually empty.
However, there are some Lua functions that produce material to be read
by TeX, the so called print functions. The most simple use of these is
tex.print(<string> s). The characters of the string s will be placed
on TeX input buffer, that is, "before TeX's eyes" to be read by TeX
immediately. For example:

\count10=20
a\directlua{tex.print(tex.count[10]+5)}b

expands to

a25b

Here is another example:

$\pi = \directlua{tex.print(math.pi)}$

will result in

p = 3.1415926535898

Note that the expansion of \directlua is a sequence of characters, not
of tokens, contrary to all TeX commands. So formally speaking its
expansion is null, but places material on a pseudo-file to be
immediately read by TeX, as etex's \scantokens.

For a description of print functions look at section 4.13.10.

Regards,
Javier A. Múgica


More information about the dev-luatex mailing list