如何在数学模式中重新定义单个字母

如何在数学模式中重新定义单个字母

我想使用数学模式唯一的字母g \mbox{g}(带有另一个尾巴)。如何才能全局重新定义它?我找到了重新定义字母 z 的示例:

\catcode`\z=\active \def z{Yawn, I'm tired}

但它对字母 g 不起作用!代码

\catcode`\g=\active \def g{\mbox{g}}

返回错误。

答案1

将字母变成活动字符绝对不是一个好主意。

例如,之后

\catcode`\g=\active

你不能\begin再使用。

对于数学模式,有不同的解决方案:

\begingroup\lccode`~=`g \lowercase{\endgroup\def~}{\mbox{g}}
\mathcode`g="8000

g使得数学活跃字符;由于\mbox切换到文本模式,所以g不会引起问题。


\catcode`\g=\active \def g{\mbox{g}}基本上做的是

\def\foo{\mbox{\foo}}

一旦\foo展开,就会开始无限循环。

相关内容