[luatex] token_filter

Élie Roux elie.roux at telecom-bretagne.eu
Sat Apr 27 09:56:45 CEST 2013

Dear all,

> I second that; going for token_filter will only result in hacks, I’m afraid.
> It’s just so easy with nodes. I think Taco’s page on the wiki was just for fun.

I'll do that then. I think the best is even to hook in the luaotfload 
code, and inspire from what Hans did in ConTeXt.

> Elie’s original questions:
>>    - where is the ouptut of token.command_name documented?
> Err, in the manual?

Section 4.17.6 reads:

This returns the name associated with the ‘command’ value of the token 
in LUATEX. There is not always a direct connection between these names 
and primitives. For instance, all \ifxxx tests are grouped under 
if_test, and the ‘command modifier’ defines which test is to be run.

This is good, but where do I get the different possible outputs, and 
what they correspond to? Or is there something I missed in the manual?

>>    - how can I know if the token I get is inside a csname? (ex: in a file
>> I have \foobar. When, in the token_filter, I get the token b, how can I
>> know it's part of a csname name ?)
> “b” in “\foobar” isn’t a token; the token is the entire command.

Well, that's what I thought at the beginning, but no... if I make a dumb 
print function in the callback in a very simple plain tex file it's 
true, but when it starts to be in a complex LaTeX document, I get *a 
lot* of things coming from csnames, put some prints in my version of 
polyglossia and you'll see very surprising things! Maybe there is 
something I did wrong, but it's quite hard to figure out...

>>    - same question for other characters, for example '<' in \ifnum\foo<0
> If I understand your question correctly as “How can I know whether ‘<’
> is used as an operator in an \ifnum-conditional”, then the answer is:
> keep track of what has come before :) (Or, actually, perhaps some
> tracing is possible in Lua: “tex.tracingifs”... “tex.currentconditional”...?)


> Somebody (Patrick, if I remember correctly) once asked on this list
> what token_filter was good for; honestly, I don’t know. It’s nice to
> have it around when you really don’t know how to spend/waste a few
> hours at your computer, but apart from that, I find it neither useful
> nor usable.

That's what I understood after several hours :)

Thank you,

More information about the luatex mailing list