使用 breqn 和 babel 的 Bug

使用 breqn 和 babel 的 Bug

我遇到了一个无法修复的错误(日志中没有警告/错误)。

以下是一个 mwe:

\documentclass{article}
\usepackage[english,french]{babel}
\usepackage{breqn}

\begin{document}
  \[\{A, B, C\}\]

  \selectlanguage{french}
  \[\{A, B, C\}\]

  \selectlanguage{english}
  \[\{A, B, C\}\]
\end{document}

我使用以下命令进行编译:

$ latexmk -lualatex bug.tex

输出如下,逗号映射到符号\Gamma!?

输出

有人知道如何解决这个问题吗?

$ lualatex --version
This is LuaTeX, Version 1.07.0 (TeX Live 2018)
$ latexmk --version
Latexmk, John Collins, 17 Jan. 2018. Version 4.55

答案1

babel-french模块\std@math@comma在进入和退出法语语言区块时执行此操作。

这会将逗号的数学代码重置为标准,但breqn希望数学代码保持不变"8000

简单地\std@math@comma什么也不做。

\documentclass{article}
\usepackage[english,french]{babel}
\usepackage{breqn}

\makeatletter
\let\std@math@comma\relax
\makeatother

\begin{document}

\[\{A, B, C\}\]

\selectlanguage{french}
\[\{A, B, C\}\]

\selectlanguage{english}
\[\{A, B, C\}\]

\end{document}

在此处输入图片描述

您应该意识到它breqn与几个包并不真正兼容,最好不要在严肃的排版任务中使用。

答案2

用来lualatex

\documentclass{article}
\usepackage[english,french]{babel}
\usepackage{breqn}
\usepackage{unicode-math}
...

相关内容