breqn 与 cleveref 配合不好(反之亦然)

breqn 与 cleveref 配合不好(反之亦然)

这与Cleveref 和 breqn 软件包不能很好地协同工作,而且可能没有一个简单的答案。

我正在尝试使用 breqn,发现我标记的一些方程式被 cleveref 错误标记了:

\documentclass{article}
\usepackage{breqn}
\usepackage{cleveref}

\begin{document}

\begin{dmath}\label{first}
  a = b + c
\end{dmath}
This is \cref{first}.

\begin{dmath}[number = {$\star$}]\label{second}
  a = b + c
\end{dmath}
This is \cref{second}.

\end{document}

结果

我认为这是因为 cleveref 没有修补 breqn 用于通过 创建方程标签的任何机制[number = {...}]

有没有简单的解决方法?如果没有,这将阻止我继续使用 breqn,这很遗憾。

答案1

解决方案来自Cleveref 和 breqn 软件包不能很好地协同工作仅需进行一个小调整:

\documentclass{article}
\usepackage{breqn}
\usepackage{cleveref}

\makeatletter
\let\cref@old@eq@setnumberOld\eq@setnumber
\def\eq@setnumber{%
\cref@old@eq@setnumberOld%
\cref@constructprefix{equation}{\cref@result}%
\protected@xdef\cref@currentlabel{%
[equation][\arabic{equation}][\cref@result]\p@equation\eq@number}}
\makeatother

\begin{document}

\begin{dmath}\label{first}
  a = b + c
\end{dmath}
This is \cref{first}.

\begin{dmath}[number = {$\star$}]\label{second}
  a = b + c
\end{dmath}
This is \cref{second}.

\end{document}

给出:

示例输出

相关内容