在 lua 中的 lualatex 的一个回调(build_filter)中,我打印了该函数的第一个参数。
\begin{luacode}
function f(a)
tex.print(a)
end
luatexbase.add_to_callback("buildpage_filter",f,"build_filter")
\end{luacode}
但在编译过程中我收到一个错误:
! Missing $ inserted.
<inserted text>
$
好的,我知道该变量a
可能具有数学模式下使用的字符,但是如何在文本模式下打印它?
答案1
请始终提供可用的测试文件而不是片段。
buildpage_filter
获取一个固定字符串列表之一的参数,其中一些,例如after_output
包含下划线,因此如果您通过将该字符串插入文档,tex.print
那么您将需要使用非默认的 catcode 表。
一个可能的特征tex.print
是
tex.print(<number> n, <string> s, ...)
其中n
是用于打印字符串 的 catcode 表的编号s
。有两个特殊的 catcode 表,它们由负数标识:
n = -1
:使用当前活动的 catcode 机制n = -2
:使用与 相同的 catcode\the\toks
,即所有字符都有 catcode 12,但空格的 catcode 为 10。