是否可以重新定义空格的字符代码?

是否可以重新定义空格的字符代码?

如果我执行代码,\tt\catcode` =12\relax test 我会得到:

在此处输入图片描述

\char32我也可以使用代替 来模拟相同的效果<space>。是否可以更改 的字符代码<space>,以便当我输入时,\tt\catcode`\ =12\relax test那里会显示另一个字符?例如,每当我输入 时,<space>它都会显示!,即\char33

答案1

Plain TeX 提供\obeyspaces简单地声明空格字符为活动状态的功能。

\obeyspaces\def {!}%

\tt test

\tt^^@test test

\bye

在此处输入图片描述

答案2

受到user202729评论的启发,我做了以下事情:

\begingroup\lccode`~=` \lowercase{\endgroup\obeyspaces\let~=!\relax}
\tt test
\bye

注意在定义中使用活动空间\lowercase的技巧TeX\let~=!

相关内容