命令中允许的字符

命令中允许的字符

我正在编写一个可以做一些神奇事情的小型 Python 脚本(准备好后会将其发布到 github 上)。我需要搜索我的 .tex 文件命令。到目前为止,我实现它的方式是脚本查找反斜杠并读取其后的内容,直到命令调用结束。为此,我需要知道命令中可以使用的所有可能的可接受字符,以便我的脚本非常强大并且不会在错误的字符处停止。有什么想法吗?

(请不要对搜索算法等发表评论,一旦我的脚本准备好了,我会打开一个新线程并单独获得反馈)

答案1

TeX 关于控制序列的规则很简单。

  • 控制符号
  • 控制词

控制符号有反斜杠(更准确地说,类别代码为 0 的字符)和恰好一个没有类别代码 11 的字符。

控制字包含反斜杠,后跟任意数量的类别代码为 11 的字符,任何类别代码不为 11 的字符都会停止对名称的搜索。

你发现问题了吗?你随时都可以更改字符的类别代码,从而允许使用之前不可用的控制字,或禁止使用其他控制字。

这是由 所利用的\makeatletter,它将@catcode 更改为 11,从而允许使用控制字@在其名称中使用。一旦控制字进入 TeX 扫描器,其名称就会以独立于 catcode 的方式记录下来。

我不知道你的 Python 脚本的目的是什么,也不知道你是否可以对“标准”类别代码做出假设。但欺骗你的脚本很容易:如果你输入

\^^"egin

TeX 会将其解释\begin^^"解释b 扫描控制序列名称的过程。哦,只有^类别代码为 7 时才会发生这种转换。为了知道给定位置的字符的类别代码,您需要先解释其 TeX 代码。

相关内容