为什么添加 breqn 包会出现 ! 未定义的控制序列。\begin{document}?

为什么添加 breqn 包会出现 ! 未定义的控制序列。\begin{document}?

我正在学习如何在 Linux 上使用 TeXLive 2023 手动加载字体。

经过一番努力,我终于让这个 MWE 工作了。这会加载我在 下找到的一些随机字体,/usr/local/texlive/2023/texmf-dist/fonts只是为了学习如何加载它们。我使用命令\setmainfont\setmathfont

\documentclass[12pt]{book}    
\usepackage{amsmath}     
\usepackage{fontspec,unicode-math}

\setmainfont[
    Path           = /usr/local/texlive/2023/texmf-dist/fonts/opentype/public/qualitype/,
    Extension      = .otf,
    Ligatures      = TeX
]{QTSchoolCentury}

\setmathfont[
    Path           = /usr/local/texlive/2023/texmf-dist/fonts/opentype/public/asana-math/,
    Extension      = .otf,
    Ligatures      = TeX
]{Asana-Math}

%\usepackage{breqn}

\begin{document}
test

\[
\sin x = \int_{0}^{\infty} \cos x
\]
\end{document}

我使用 lualatex 编译上述内容并且没有出现任何错误。

>lualatex A.tex
This is LuaHBTeX, Version 1.16.0 (TeX Live 2023) 
 restricted system commands enabled.
(./A.tex
   .....

它编译并给出

在此处输入图片描述

现在我取消注释\usepackage{breqn},现在相同的 lualatex 命令给出

/usr/local/texlive/2023/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
) (/usr/local/texlive/2023/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
(/usr/local/texlive/2023/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
! Undefined control sequence.
<recently read> \
 
l.25 \[
     
? 

我做错了什么?再说一遍,上面只是我学习如何加载字体以了解它是如何完成的。为什么添加breqn会出现错误?我甚至还没有使用过这个包。

有解决方法吗?

我正在使用这个答案如何使用 LuaLaTeX 正确安装和使用新字体? 作为参考。

Linux 上的 TL 2023

答案1

您可以将示例简化为

\documentclass[12pt]{book}

\usepackage{unicode-math}

\usepackage{breqn}

\errorcontextlines=2000
\begin{document}
test
\end{document}

您可以看到设置数学支柱失败,一个简单的修复方法是保留原始设置功能,但其他一些东西可能会中断,breqn 在编写时并没有考虑 Unicode。

\documentclass[12pt]{book}
\makeatletter
\usepackage{unicode-math}
\let\foo\resetMathstrut@
\usepackage{breqn}
\let\resetMathstrut@\foo
\makeatother

\errorcontextlines=2000
\begin{document}
test
\end{document}

相关内容