(La)TeX 宏/命令名称是否限制为 ASCII 代码字符(字母)?

(La)TeX 宏/命令名称是否限制为 ASCII 代码字符(字母)?

也许这个问题已经被问过了,但我的搜索没有成功。

宏名是否必须包含 ASCII 字符(即字母基本上是 [a..z,A..Z],诸如\(等特殊字符对于这个问题并不重要)或者是否可以说,例如使用西里尔字母

或者任何其他非(西方)拉丁字母的字母表?

这在某种程度上与输入编码有关,但另一方面又与它无关,因为我对(La)TeX 生成的用另一种字母表/编码输入的普通单词不感兴趣,比如没有具体信息,使用正确的字体生成相应的输出。

LaTeX 3、ConTeXt、Xe/LuaLaTeX 的情况如何?

答案1

传统 TeX 和 pdfTeX 中有 256 个内部代码,你可以将其中的任意子集设置为字母(catcode 11)。然后这些字符可以用于控制序列。

LuaTeX 和 XeTeX 中有数千种内部代码(来自 Unicode)。如果您将(例如)西里尔字母设置为字母,那么您可以在控制序列中使用它们。

解释例如,将捷克和斯洛伐克字母表中的所有字母设置为字母,因此可能存在\podezřelésekvence。当 csplain 使用 pdfTeX 时,捷克和斯洛伐克字母表中的 UTF-8 输入由 encTeX 转换为内部代码。因为 encTeX 会进行转换在令牌处理器之前,所有捷克语和斯洛伐克语字母都被视为具有 catcode 11 的单个标记,并且可以在控制序列中使用。

可以对西里尔字母进行一些类似操作,但 pdfTeX 中的内部代码数量限制为 256 个。

当 csplain 或其他宏引擎使用 XeTeX 或 LuaTeX 时则没有问题。UTF-8 代码会自然转换为内部代码。

相关内容