В одном из обратных вызовов lualatex в lua (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
получает аргумент, один из фиксированного списка строк, некоторые из них, например, after_output
включают подчеркивание, поэтому, если вы вставите эту строку в документ с помощью , tex.print
вам нужно будет использовать нестандартную таблицу catcode.
Одна из возможных подписей — tex.print
это
tex.print(<number> n, <string> s, ...)
где n
— номер таблицы catcode, используемой для печати строки s
. Существуют две специальные таблицы catcode, которые идентифицируются отрицательными числами:
n = -1
: Использует текущий активный режим catcoden = -2
: Использует те же каткоды, что и\the\toks
, т. е. все символы имеют каткод 12, за исключением пробелов с каткодом 10.