我再次尝试breqn
看看是否可以使用它。我发现了一些奇怪的东西。同一个 latex 文件在 Linux 上使用 TL 2021 与早期 TL 版本编译时会产生不同的输出。
我发现似乎让人困惑的是\left(
和\right)
。比较一下
\documentclass[12pt]{book}
\usepackage{amsmath}
\usepackage{breqn}
\begin{document}
\begin{dgroup}
\begin{dmath}
y_h(x) = \left(x\right)+ y
\end{dmath}
\end{dgroup}
\begin{dgroup}
\begin{dmath}
y_h(x) =(x)+ y
\end{dmath}
\end{dgroup}
\end{document}
编译后lualatex
给出
第一个不好,因为使用了\left(
和\right)
。删除这些可以解决问题。但这是自动生成的 latex,它到处都使用\left(
和\right)
。最新 TL 中的某些更改导致了这种情况。使用早期 TL 版本 2020 编译上述内容可为两种情况提供正确的输出。
更新于 2021 年 10 月 19 日
不幸的是,下面答案中提出的修复方法并没有修复我刚刚发现的其他一些情况。我不知道下面这个是否是一个新的问题,需要放在新问题中,或者是否是同一个问题。但考虑一下这个 MWE
\documentclass[11pt]{book}
\usepackage{amsmath}
\usepackage{breqn}
%add proposed fix
\AddToHook{env/dgroup/begin}{\csname tex_everypar:D\endcsname{}}
\begin{document}
Substituting the above back into the ode gives
\begin{dmath*}
2 x^{2} \left(x^{2}+x +1\right) \left(\sum_{n=0}^\infty \left(n +r \right) \left(n +r -1\right) a_{n} x^{n +r -2}\right)
+x \left(11 x^{2}+11 x +9\right) \left(\sum_{n=0}^\infty \left(n +r \right) a_{n} x^{n +r -1}\right)
+\left(7 x^{2}+10 x +6\right) \left(\sum_{n=0}^\infty a_{n} x^{n +r}\right) = 0
\end{dmath*}
\end{document}
使用最新的 TL 2021 编译上述内容时,会给出以下输出
>lualatex foo.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021)
restricted system commands enabled.
(./foo.tex
LaTeX2e <2021-06-01> patch level 1
L3 programming layer <2021-10-17>
....
Output written on foo.pdf (1 page, 59924 bytes).
Transcript written on foo.log.
使用 TL 2020 进行编译时,如果fix
其中没有代码,则输出如下
>lualatex foo.tex
This is LuaHBTeX, Version 1.12.0 (TeX Live 2020)
restricted system commands enabled.
(./foo.tex
LaTeX2e <2020-10-01> patch level 4
L3 programming layer <2021-02-18>
....
Output written on foo.pdf (1 page, 59964 bytes).
Transcript written on foo.log.
如您所见,修复在这里不起作用。但我不知道这是否是一个新问题。如果是,我可以就此提出新问题。
仅供参考。已添加问题单https://github.com/wspr/breqn/issues/52
答案1
新的段落钩子代码正在干扰breqn
。以下内容正在用大锤敲打它,并在 的范围内禁用该机制的大部分,dmath
但在这种情况下有效
\documentclass[12pt]{book}
\usepackage{amsmath}
\usepackage{breqn}
\AddToHook{env/dgroup/begin}{\csname tex_everypar:D\endcsname{}}
\begin{document}
\begin{dgroup}
\begin{dmath}
y_h(x) = \left(x\right)+ y
\end{dmath}
\end{dgroup}
\begin{dgroup}
\begin{dmath}
y_h(x) =(x)+ y
\end{dmath}
\end{dgroup}
\end{document}