如何在lualatex中以文字模式列印數學物件?

如何在lualatex中以文字模式列印數學物件?

在 lua (build_filter) 中 lualatex 的一個回調中,我列印了函數的第一個參數。

\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。有兩個特殊的類別代碼表,它們由負數標識:

  • n = -1:使用目前有效的catcode機制
  • n = -2:使用與 相同的catcodes \the\toks,即所有字元都具有catcode 12,除了具有catcode 10 的空格。

相關內容