
pdfTeX 또는 XeTeX에서 다음 코드는 활성 문자를 통해 실행되며 결국 Invalid code (1114112)
(그러나 pdfTeX에서는 256과 같은) 오류를 생성합니다.
\catcode`*=13 % active
\count0=32
\def\step{%
\advance\count0 by 1
\lccode`*=\count0
\lowercase{\ifx\undefined*\else\message{\string*}\fi}%
\step
}
\step
LuaTeX에서는 메모리가 부족합니다. 내 생각에는 제어 시퀀스와 같은 활성 문자가 해시 테이블에 추가되는 것 같습니다. 나는 활성 문자에 대한 아날로그를 원합니다 \ifcsname
. 이는 해시 테이블에 제어 시퀀스를 추가하지 않습니다.
답변1
설명서에 따르면
활성 문자는 다른 방법으로는 얻을 수 없는 접두사를 사용하는 특수한 유형의 다중 문자 제어 시퀀스로 내부적으로 구현됩니다.
소스를 살펴보면 이 접두사가 UTF-8의 U+FFFF = 239,191,191임을 알 수 있으므로 다음과 같이 할 수 있다고 생각합니다.
`\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
생산하는
active char [^L]
active char [^M]
active char [^Z]
active char [ ]
active char [']
active char [_]
active char [~]
active char [∞]
이것은 활성 정의가 있는 보고서 문자만 추측할 것입니다. 정의되지 \let
않은 문자는 원본이 정의되지 않은 것으로 표시되지만 해시 항목이 표시됩니다.