我不知道为什么有人会真正想这样做,但我想知道我该怎么做(出于教育目的)。
假设我制作e
并激活令牌,然后让它打印字符e
。
我之所以选择它e
是因为它是 中的一个字母\def
。所以,这是我的想法,但它行不通。
\documentclass{article}
\begin{document}
% Now I can't use e, so I have to use something else instead.
% I tried ^^65, but it doesn't work (65 is ASCII hex value for e)
{
\catcode`e=\active
\d^^65f{\char`e}
SomTxt
}
\end{document}
由于字母e
在里面,因此失败\def
。我该如何正确编译?
答案1
\documentclass{article}
\begin{document}
% Now I can't use e, so I have to use something else instead.
% I tried ^^65, but it doesn't work (65 is ASCII hex value for e)
{\let\z\def
\catcode`e=\active
\ze{\char`\e}
SomeText
}
or
{\let\z\edef
\catcode`e=\active
\ze{\stringe}
SomeText
}
\end{document}
答案2
之前\expandafter
对\active
以下内容进行标记\def
,但不改变类别代码e
:
{
\catcode`e=\expandafter\active
\def e{\char`e}
SomeText
}
另一个技巧是通过 来实现的\lowercase
。定义是~
通过 更改为\lowercase
来完成的e
。之后类别代码就会改变。
{
\begingroup
\lccode`~=`e %
\lowercase{\endgroup
\def~%
}{\char`e}%
\catcode`e=\active
SomeText
}