lua 代码中定义的宏中的反斜杠

lua 代码中定义的宏中的反斜杠

TeX 文件:

\directlua{require "foo"}
\show\foo
\bye

以及以下内容foo.lua

token.set_macro("foo","\\a\\b\\u\\z")

结果如下:

> \foo=macro:
->BADa\b \u BADz.
l.2 \show\foo

为什么有些反斜杠会变成BAD而其他的却能按预期工作?

我认为这可能是一个错误,但请先在这里询问,以防我有根本性的误解。

答案1

令牌库几乎不经过任何检查就深入到 tex 内部。

如果你这样做

\def\wibble{\a\z}

\directlua{require "foo"}
\show\foo
\bye

然后你得到

> \foo=macro:
->\a \b \u \z .

但如果\atex 根本没有看到,则没有与之相关的哈希表条目,\a也没有任何东西可以设置为替换文本中的标记\foo

答案2

评论太长了。

这不太可能奏效,请参阅来源中的这条评论lnewtokenlib.c

这是一个相关的简单转换器;如果需要更多,只需使用 tex.print 与常规 \def 或 \gdef 并将字符串输入常规扫描仪即可;

相关内容