luatexluaescape строка и обратная косая черта

luatexluaescape строка и обратная косая черта

Я новичок в LuaLatex и пытаюсь написать простые макросы.

Однако когда я отправляю в lua строку, содержащую обратную косую черту (например, \R^n), код работает не так, как ожидалось.

Например, мой код lua выглядит так:

function fourier(group, f)
    output = '\\mathcal{F}_{'..group..'}'
    if f ~= '' then
        output = output..'\\left\\{ {'..f..'} \\right\\}'
    end
    tex.sprint(output)
end

Макрос, который я пытаюсь определить, выглядит так:

\DeclareDocumentCommand \F{D<>{}O{}}{%
    \directlua{
        fourier("\luatexluaescapestring{#1}", "\luatexluaescapestring{#2}")
    }
}

Однако когда я печатаю \[ \F<\R^n>[f] \], в PDF-файле появляется что-то похожее на \mathrm{F}_{@bgroup\R}^n {f}.

Кто-нибудь может мне помочь?

EDIT: полный код:

\documentclass{report}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{xparse}
\title{Title}
\author{bkn}
\newcommand{\R}{\mathbb{R}}
\directlua{dofile("functions.lua")}
\DeclareDocumentCommand \F{D<>{}O{}}{%
    \directlua{
        fourier("\luatexluaescapestring{#1}", "\luatexluaescapestring{#2}")
    }
}
\begin{document}

$\F<a>[f]$ % This works
$\F<\mathbb{R}^n>[f]$ % This doesn't

\end{document}

и functions.lua содержит указанную выше функцию.

решение1

LuaTeX делает \edef-подобное расширение внутри \directlua(хотя последнее само по себе расширяемо). Чтобы избежать этого, можно использовать примитив e-TeX\unexpanded

\DeclareDocumentCommand \F{D<>{}O{}}{%
    \directlua{
        fourier(
         "\luatexluaescapestring{\unexpanded{#1}}",
         "\luatexluaescapestring{\unexpanded{#2}}"
         )
    }
}

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