假设我使用'
活动字符来插入另一个符号:
{\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
想要的数字。
总是在所需常量后留一个空格。