
lua の lualatex のコールバックの 1 つ (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
固定された文字列リストの 1 つを引数として取得します。その一部には、after_output
アンダースコアなどが含まれます。そのため、 を介してその文字列をドキュメントに挿入する場合は、tex.print
デフォルト以外の catcode テーブルを使用する必要があります。
のサインとして考えられるのtex.print
は
tex.print(<number> n, <string> s, ...)
ここで、 はn
文字列を印刷するために使用される catcode テーブルの番号ですs
。負の数で識別される 2 つの特別な catcode テーブルがあります。
n = -1
: 現在有効なcatcode制度を使用するn = -2
: と同じ catcode を使用します\the\toks
。つまり、catcode が 10 であるスペースを除くすべての文字の catcode は 12 です。