以下代码按预期工作。它将数学表达式拆分成多行。
\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}%