
In pdfTeX oder XeTeX durchläuft der folgende Code die aktiven Zeichen und erzeugt schließlich einen Fehler wie Invalid code (1114112)
(aber mit 256 in pdfTeX).
\catcode`*=13 % active
\count0=32
\def\step{%
\advance\count0 by 1
\lccode`*=\count0
\lowercase{\ifx\undefined*\else\message{\string*}\fi}%
\step
}
\step
In LuaTeX geht der Speicher aus. Ich vermute, dass aktive Zeichen, wie Steuersequenzen, zur Hash-Tabelle hinzugefügt werden. Ich hätte gerne ein Analogon für \ifcsname
aktive Zeichen: das die Steuersequenz nicht zur Hash-Tabelle hinzufügt.
Antwort1
Im Handbuch steht
Aktive Zeichen werden intern als spezieller Typ von Steuersequenzen mit mehreren Buchstaben implementiert, der ein Präfix verwendet, das anderweitig nicht zu erhalten ist.
Das Stöbern in den Quellen lässt darauf schließen, dass dieses Präfix als UTF-8 U+FFFF = 239,191,191 ist. Ich denke also, Sie können Folgendes tun:
`\catcode`∞=\active
\def∞{and beyond}
\directlua{
for i,v in pairs (tex.hashtokens()) do
if
(
string.byte(v,1,1)==239 and
string.byte(v,2,2)==191 and
string.byte(v,3,3)==191
)
then
texio.write_nl('active char [' ..string.sub(v,4) ..']')
end
end
}
\bye
das erzeugt
active char [^L]
active char [^M]
active char [^Z]
active char [ ]
active char [']
active char [_]
active char [~]
active char [∞]
Dadurch werden vermutlich nur Zeichen gemeldet, die jemals eine aktive Definition hatten. Wenn Sie \let
das Zeichen auf „undefiniert“ setzen, wird es in Ihrem Original als „undefiniert“ angezeigt, hier würde jedoch der Hash-Eintrag angezeigt.