使用 LuaLaTeX 打破方程

使用 LuaLaTeX 打破方程

以下代码按预期工作。它将数学表达式拆分成多行。

\documentclass{article}
\usepackage{breqn}
\begin{document}
\begin{dmath*}
 f(1.02) + f (1.06) + f (1.1) + f (1.14) + f (1.18) + f (1.22) + f (1.26) + f (1.3) + f (1.34) + f (1.38) + f (1.42) + f (1)
\end{dmath*}
\end{document}

但是下面的方法不起作用。它不会破坏多行中的数学表达式。

\documentclass{article}
\usepackage{luacode,breqn}
\makeatletter
\newcommand{\luaTest}{{%
\directlua{%
local mystr = [[
f(1.02) + f (1.06) + f (1.1) + f (1.14) + f (1.18) + f (1.22) + f (1.26) + f (1.3) + f (1.34) + f (1.38) + f (1.42) + f (1)
]]
tex.print(tostring(mystr))
}%
}%
}%
\makeatother
\begin{document}
\begin{dmath*}
\luaTest
\end{dmath*}
\end{document}

问题是什么?如何解决?

答案1

这与 Lua 无关,括号组可防止中断

\documentclass{article}
\usepackage{breqn}
\begin{document}
\begin{dmath*}
 {f(1.02) + f (1.06) + f (1.1) + f (1.14) + f (1.18) + f (1.22) + f (1.26) + f (1.3) + f (1.34) + f (1.38) + f (1.42) + f (1)}
\end{dmath*}
\end{document}

删除该组允许中断

\documentclass{article}
\usepackage{luacode,breqn}

\newcommand{\luaTest}{%
\directlua{%
local mystr = [[
f(1.02) + f (1.06) + f (1.1) + f (1.14) + f (1.18) + f (1.22) + f (1.26) + f (1.3) + f (1.34) + f (1.38) + f (1.42) + f (1)
]]%
tex.print(tostring(mystr))%
}%
}%

\begin{document}
\begin{dmath*}
\luaTest
\end{dmath*}
\end{document}

如果(由于未显示的原因)你确实需要一个可以使用的组\begingroup

\newcommand{\luaTest}{\begingroup
\directlua{%
local mystr = [[
f(1.02) + f (1.06) + f (1.1) + f (1.14) + f (1.18) + f (1.22) + f (1.26) + f (1.3) + f (1.34) + f (1.38) + f (1.42) + f (1)
]]%
tex.print(tostring(mystr))%
}%
\endgroup}%

相关内容