我想用 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 表示逐字逐句,这使得它有效!