![Wie drucke ich mathematische Objekte im Textmodus in Lualatex?](https://rvso.com/image/391706/Wie%20drucke%20ich%20mathematische%20Objekte%20im%20Textmodus%20in%20Lualatex%3F.png)
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 a
wahrscheinlich 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_filter
erhält ein Argument aus einer festen Liste von Zeichenfolgen, von denen einige beispielsweise after_output
einen Unterstrich enthalten. Wenn Sie diese Zeichenfolge also über in das Dokument einfügen, tex.print
müssen Sie eine nicht standardmäßige Catcode-Tabelle verwenden.
Eine mögliche Signatur von tex.print
ist
tex.print(<number> n, <string> s, ...)
wobei n
die 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-Regimen = -2
: Verwendet dieselben Catcodes wie\the\toks
, d. h. alle Zeichen haben den Catcode 12, mit Ausnahme von Leerzeichen, die den Catcode 10 haben.