¿Cómo imprimir objetos matemáticos en modo texto en lualatex?

¿Cómo imprimir objetos matemáticos en modo texto en lualatex?

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 aprobablemente 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_filterobtiene un argumento de una lista fija de cadenas, algunas de ellas, como after_outputincluir un guión bajo, por lo que si inserta esa cadena en el documento, tex.printnecesitará usar una tabla de catcode no predeterminada.

Una posible firma de tex.printes

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

¿Dónde nestá 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 activo
  • n = -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.

información relacionada