重新定义一封写给自己的信

重新定义一封写给自己的信

我不知道为什么有人会真正想这样做,但我想知道我该怎么做(出于教育目的)。

假设我制作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
  }

答案3

利用“缺失空间综合症”的良性影响:

{\catcode`e=13\def e{-\char`\e-}Test}Test\bye

在此处输入图片描述

带有抽象意义:

\def\defactive#1#2{%
  \begingroup
  \lccode`~=`#1\lowercase{\endgroup\def~}{#2}%
  \catcode`#1=\active
}

{\defactive{e}{-e-}Test}Test

\bye

相关内容