En uno de los callbacks de lualatex en lua (build_filter) imprimo el primer argumento de la función.
\begin{luacode}
function f(a)
tex.print(a)
end
luatexbase.add_to_callback("buildpage_filter",f,"build_filter")
\end{luacode}
Pero durante la compilación me sale un error:
! Missing $ inserted.
<inserted text>
$
Ok, sé que la variable a
probablemente tenga caracteres usados en modo matemático, pero ¿cómo puedo imprimirla en modo texto?
Respuesta1
Proporcione siempre un archivo de prueba utilizable, no un fragmento.
buildpage_filter
obtiene un argumento de una lista fija de cadenas, algunas de ellas, como after_output
incluir un guión bajo, por lo que si inserta esa cadena en el documento, tex.print
necesitará usar una tabla de catcode no predeterminada.
Una posible firma de tex.print
es
tex.print(<number> n, <string> s, ...)
¿Dónde n
está el número de la tabla catcode utilizada para imprimir la cadena s
? Hay dos tablas de catcode especiales que se identifican con números negativos:
n = -1
: Utiliza el régimen de código cat actualmente activon = -2
: Utiliza los mismos códigos cat que\the\toks
, es decir, todos los caracteres tienen el código cat 12, se esperan espacios que tienen el código cat 10.