这与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}
给出: