[luatex] Getting the extra primitives?

Taco Hoekwater taco at elvenkind.com
Wed Feb 17 13:41:05 CET 2010


T T wrote:
> On 17 February 2010 11:08, Joseph Wright
> <joseph.wright at morningstar2.co.uk> wrote:
>> On 17/02/2010 09:27, Taco Hoekwater wrote:
>>> Lua stuff is not saved in the format unless you put in a lua bytecode
>>> register (wrapped in a function). This is inconvenient, I know, but
>>> serializing a whole lua state is a lot of work and therefore not done
>>> (yet?).
>> Okay, how would I do this? As it's only one function, I think some
>> awkwardness setting things up is acceptable. AS I'm looking at this from a
>> LaTeX-like point of view I'd like the format to be self-contained (no
>> additional files required for it to at least load and function "as
>> advertised").
> 
> Hi Joseph,
> 
> I had a quick stab at this (with essentially no prior experience in
> LuaTeX programming). The following seemed to work for me and does what
> you want:

Yes. A somewhat more generic solution is this:

\directlua
   {
     tex.enableprimitives('',tex.extraprimitives ())
     lua.bytecode[1]=function ()
       function pdfstrcmp (A, B)
         if A == B then
           tex.write("0")
         elseif A < B then
           tex.write("-1")
         else
           tex.write("1")
         end
       end
     end
     lua.bytecode[1]()
   }
  \everyjob{\directlua{lua.bytecode[1]()}}
  \long\def\pdfstrcmp#1#2{%
   \directlua
     {%
       pdfstrcmp("\luaescapestring{#1}","\luaescapestring{#2}")%
     }%
  }




More information about the luatex mailing list