如何正确使用主动角色?

如何正确使用主动角色?

假设我使用'活动字符来插入另一个符号:

{\tt A'C B}

\def\adef#1{\catcode`#1=13 \begingroup \lccode`\~=`#1\lowercase{\endgroup\def~}}
\let\oldtt\tt\def\tt{\adef'{\char"0D}\oldtt}

{\tt A'C B}

{\tt A'c B}
\bye

日志文件包含以下内容:

Missing character: There is no ^^dc in font cmtt10!

为什么在第二种情况下结果却不是这样A'C B,尽管第三种情况按预期工作?

答案1

这是因为在 active 的定义中没有空格'

\adef'{\char"0D}

应该

\adef'{\char"0D }

因此 TeX 就会知道常数在哪儿终止(并且该空间会被 TeX 规则吞噬)。

在第一种情况下,TeX 呈现的是

'C

即成为

\char"0DC

TeX 会适时地寻找字符编号"DC(当然,在七位字体中不存在字符编号)。

在第二种情况下,输入流是

\char"0Dc

并且,由于c在十六进制数中是不合法的,根据语法规则,找到的数字就是"0D想要的数字。

总是在所需常量后留一个空格。

相关内容