如何在lualatex中以文本模式打印数学对象?

如何在lualatex中以文本模式打印数学对象?

在 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。

相关内容