编号宏

编号宏

可能重复:
\newcommand 名称不能包含数字,例如 \Mycomand123

我正在尝试一些我认为简单的事情

\def\test{Hello}
\def\test2{Hello again}
\test
\test2

由于我无法控制命名,所以我需要做一些修改。

\catcode30 = 11
\catcode31 = 11
\catcode32 = 11

适用于 0 和 1,但不适用于 2

我也尝试过\catcode´1等等,结果是一样的。

我得到一个缺失的数字,被视为零。

如果有人知道为什么或其他解决方案可以在定义的命名中包含数字,我们将不胜感激

答案1

对于原始问题:

  1. 数字 0、1、2 在 ASCII 中是 48、49、50(十进制),而不是 30、31、32(十六进制)。

  2. \catcode`1应该可以工作,但是不行\catcode´1

  3. 保存号码11以供日后使用,或使用其他技巧来访问原始号码。例如\def\x{\catcode...} \x

无论如何,更改数字的类别代码通常不是一个好主意。

相关内容