[luatex] \catcodetable0

Manuel Pégourié-Gonnard mpg at elzevir.fr
Sat Mar 27 10:54:50 CET 2010


Heiko Oberdiek a écrit :
> On Sat, Mar 27, 2010 at 01:58:22AM +0100, Manuel Pégourié-Gonnard wrote:
>> Sorry if I'm missing something obvious, but I fail to understand the
>> behaviour of \catcodetable0. Consider the following test file.
>> \catcodetable0\relax
>> \showthe\catcode64
>> \catcode64 11
>> \catcodetable0\relax
>> \showthe\catcode64
>> \initcatcodetable1
>> \catcodetable1\relax
>> \showthe\catcode64
>> \bye
>> The "output" is 12, 11, 12 (LuaTeX from trunk). I would expect 12, 12, 12
>> \(the catcodetable0 statement should override the preceding \catcode
>> assignment, as does the later \catcodetable1).
> The \catcode assignment has changed catcode
> table 0 (until the current group is closed).

That's what I misunderstood. It thought the catcode tables could only be
modified (globally) by \initcatcodetable and \savecatcodetable.

> And the following \catcodetable0 has nothing to do,
> because the current table is already table 0.
Right. For some reason I thought that \catcode modifies only the "current set of
catcodes" which would be an object different from the "current catcode table".

So, to sum up, a catcode table can be modified:
- locally, when it is active, using \catcode,
- globally, when it is active, using \global\catcode,
- globally, when it is not active, using \savecatcodetable,
- globally, when it has never been used before, using \initcatcodetable.

I previously missed the first two options. Am I still missing something?


More information about the luatex mailing list