出于黑客的兴趣,我寻找一个 TeX 文档,可以在其中插入任意字节序列而不会导致 TeX 进程失败,但遇到了类似的问题;我基本上将字母和等号之外的所有 catcode 都设置为 9;这“有效”,因为 TeX 从未因错误而失败,但它也从未因缺少 而终止\end
。
首先\end
,然后才可以破解所有 catcode。
所以现在我寻求这个问题的解决方案,即在随机插入的垃圾后面仍然可以有“打印”文本(当然,这也需要打印垃圾)。
答案1
你需要某物终止运行。如果您将每个非字母 catcode 设为 9(忽略),则您不能使用控制序列,但可以使用文件结束符,只要您使用 etex(pdftex xtetex)等,这对经典 tex 不起作用。
我的测试文件在流中有空值和铃声 control-@ 和 control-g 等,但是系统似乎不允许我将它们剪切并粘贴到网站上,因此您必须将它们添加回来:
\def\a{%
\count0=0
\loop
\ifnum\catcode\count0=11
\else
\catcode\count0=9
\fi
\advance\count0 1
\ifnum\count0<256
\repeat
\everyeof{\end}}
\a
stuff here....