[luatex] On category code tables

Joseph Wright joseph.wright at morningstar2.co.uk
Sat Jul 10 20:59:34 CEST 2010

Hello all,

I'm taking a look at the category code table primitives provided by 
LuaTeX (\completable, \initcatcodetable and \savecatcodetable). I'm not 
entirely clear on a few things.

I'd initially imagined when I first saw about category code tables that 
you'd be able to set up a table then use it to reset a large number of 
category codes in one go. However, I pick up from


that if I have something like

   \catcode<char> <code>\relax

then the category code change will become part of the table in force, 
i.e. without an explicit \savecatcodetable<number> instruction. At the 
same time, there does not seem to be a way to copy category codes from 
one table to another. So how do I achieve:

   \savecatcodetable<number>\relax % Fixed table of codes
   \catcode<x> <y>

such that I can treat category code table <number> as a fixed set of 
category codes that will never be accidentally altered? This also seems 
to be an issue in that

   \catcode<x> <y>

doesn't reset the code for <x>. I must be missing something, as this 
otherwise undermines the entire point, as far as I can see.

At the same time, I don't see how I know which tables I can safely use. 
In a LaTeX2e situation other packages might have already set up tables 
for their own use. So to 'play nicely' I need to find out which tables 
are free before I do \savecatcodetable and potentially trash someone 
else's work?

(The context here is the LaTeX3 \ExplSyntax stack. It would be nice to 
take advantage of LuaTeX, when available, and exploit category code 
tables. However, first I need to understand how they work.)
Joseph Wright

More information about the luatex mailing list