[luatex] Getting the extra primitives?
Joseph Wright
joseph.wright at morningstar2.co.uk
Wed Feb 17 09:21:08 CET 2010
On 16/02/2010 15:43, luigi scarso wrote:
> On Tue, Feb 16, 2010 at 1:14 PM, Joseph Wright<joseph.wright at uea.ac.uk> wrote:
>> Hello all,
>>
>> Thanks for the help thus far. I'm now stuck on the next step, I'm afraid.
>> With a file to build a format something like:
>>
>> \catcode `\{ = 1 \relax
>> \catcode `\} = 2 \relax
>> \catcode `\# = 6 \relax
>> \catcode `\^ = 7 \relax
>> \catcode `\^^I = 10 \relax
>> \begingroup\expandafter\expandafter\expandafter\endgroup
>> \expandafter\ifx\csname directlua\endcsname\relax
>> \else
>> \long\def\pdfstrcmp#1#2{%
>> \directlua
>> {%
>> joseph.strcmp("\luaescapestring{#1}","\luaescapestring{#2}")%
>> }%
>> }
>> \directlua
>> {
>> tex.enableprimitives('',tex.extraprimitives ())
>> module("joseph",package.seeall)
>> function strcmp(A, B)
>> if A == B then
>> tex.write("0")
>> elseif A< B then
>> tex.write("-1")
>> else
>> tex.write("1")
>> end
>> end
>> }
>> \fi
>> \dump
>>
>> If I then try building the format and using it, with something as simple as
>>
>> \ifnum\pdfstrcmp{a}{b}=0\TRUE\else\FALSE\fi
>>
>> I get:
>>
>> ! LuaTeX error<\directlua>:1: attempt to index global 'joseph' (a nil
>> value)
>> stack traceback:
>> <\directlua>:1: in main chunk.
>> \pdfstrcmp ...ring {#1}","\luaescapestring {#2}")}
>>
>> <*> \ifnum\pdfstrcmp{a}{b}
>> =0 \TRUE\else\FALSE\fi
>> ?
>>
>> Obviously I'm still getting something wrong.
>
> joseph = joseph or { }
>
> Next you need to implement strcmp function
>
> function joseph.strcmp(A,B)
> -- your implementation here
Further testing suggests the issue may be slightly different to my
original explanation. As far as I can tell, if I use \pdfstrcmp as
defined above during the format-creation process then all is fine (for
example if I just stick \pdfstrcmp{a}{a} just before \dump): no errors.
However, if I try to use if after making a format then I get the error
as described. The conclusion is that the lua part of the set up does not
survive the format-creation process. This seems to be very odd: am I
getting something wrong? After all, the whole point of a format is that
it is a pre-compiled and self-contained entity.
--
Joseph Wright
More information about the luatex
mailing list