Как печатать математические объекты в текстовом режиме в lualatex?

Как печатать математические объекты в текстовом режиме в lualatex?

В одном из обратных вызовов 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: Использует текущий активный режим catcode
  • n = -2: Использует те же каткоды, что и \the\toks, т. е. все символы имеют каткод 12, за исключением пробелов с каткодом 10.

Связанный контент