![如何在lualatex中以文字模式列印數學物件?](https://rvso.com/image/391706/%E5%A6%82%E4%BD%95%E5%9C%A8lualatex%E4%B8%AD%E4%BB%A5%E6%96%87%E5%AD%97%E6%A8%A1%E5%BC%8F%E5%88%97%E5%8D%B0%E6%95%B8%E5%AD%B8%E7%89%A9%E4%BB%B6%EF%BC%9F.png)
在 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 的空格。