Wie drucke ich mathematische Objekte im Textmodus in Lualatex?

Wie drucke ich mathematische Objekte im Textmodus in Lualatex?

In einem der Rückrufe von Lualatex in Lua (Build_Filter) drucke ich das erste Argument der Funktion.

\begin{luacode}
function f(a)
tex.print(a)
end
luatexbase.add_to_callback("buildpage_filter",f,"build_filter")
\end{luacode}

Aber beim Kompilieren erhalte ich einen Fehler:

! Missing $ inserted.
<inserted text>
$

Ok, ich weiß, dass die Variable awahrscheinlich Zeichen enthält, die im Mathematikmodus verwendet werden, aber wie kann ich sie im Textmodus drucken?

Antwort1

Bitte stellen Sie immer eine verwendbare Testdatei und kein Fragment zur Verfügung.

buildpage_filtererhält ein Argument aus einer festen Liste von Zeichenfolgen, von denen einige beispielsweise after_outputeinen Unterstrich enthalten. Wenn Sie diese Zeichenfolge also über in das Dokument einfügen, tex.printmüssen Sie eine nicht standardmäßige Catcode-Tabelle verwenden.

Eine mögliche Signatur von tex.printist

tex.print(<number> n, <string> s, ...)

wobei ndie Nummer der Catcode-Tabelle ist, die zum Drucken der Zeichenfolge verwendet wird s. Es gibt zwei spezielle Catcode-Tabellen, die durch negative Zahlen identifiziert werden:

  • n = -1: Verwendet das aktuell aktive Catcode-Regime
  • n = -2: Verwendet dieselben Catcodes wie \the\toks, d. h. alle Zeichen haben den Catcode 12, mit Ausnahme von Leerzeichen, die den Catcode 10 haben.

verwandte Informationen