在函数中使用LuaLatex打印Latex代码

在函数中使用LuaLatex打印Latex代码

我想用 Lua 函数打印 Latex 代码。但是如果字符串中有括号,我的函数就会出现问题:示例中的第二个代码将不会打印),谁能帮我?

\RequirePackage{luatex85}
\documentclass[a4paper,parskip=half-]{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new, babelshorthands=true]{german}
\usepackage{fontspec}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{luacode}

\begin{luacode*}
function myprint(string)
    tex.sprint(string)
end
\end{luacode*}

\newcommand*{\myprint}[1]{\directlua{myprint([[#1]])} }

\begin{document}
\myprint{works fine $\pi\cdot x^2$}
\myprint{doesn't work $\sqrt{2}$}
\end{document}

答案1

好的,我找到了一个使用 xparse 包的解决方案:

\usepackage{xparse}

然后使用

\NewDocumentCommand{\myprint}{v}
{
    \directlua{myprint([[#1]])}
}

v 表示逐字逐句,这使得它有效!

相关内容