lualatex で数学オブジェクトをテキストモードで印刷するにはどうすればいいですか?

lualatex で数学オブジェクトをテキストモードで印刷するにはどうすればいいですか?

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 です。

関連情報