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 .
但如果\a
tex 根本没有看到,则没有与之相关的哈希表条目,\a
也没有任何东西可以设置为替换文本中的标记\foo
答案2
评论太长了。
这不太可能奏效,请参阅来源中的这条评论lnewtokenlib.c
:
这是一个相关的简单转换器;如果需要更多,只需使用 tex.print 与常规 \def 或 \gdef 并将字符串输入常规扫描仪即可;