使用 breqn 时,同一个 tex 文件的输出不同。Linux 上安装了最新的 texlive,而 Windows 上安装了 MikTeX

使用 breqn 时,同一个 tex 文件的输出不同。Linux 上安装了最新的 texlive,而 Windows 上安装了 MikTeX

我再次尝试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}

在此处输入图片描述

相关内容