使用 cleveref 在 align* 环境中引用方程

使用 cleveref 在 align* 环境中引用方程

为了控制方程式编号,我使用Align*环境,将要编号的方程式放在\numberthis其末尾。之后,我标记了编号的方程式,但当我想使用包\cref的命令引用该方程式时cleveref,我得到了错误的引用(指向另一页)。它适用于下面的最小工作示例,但它不适用于我的论文文档(引用将我发送到方程式之前的页面中的图)。有人可以告诉我是否出了什么问题吗?

\documentclass[12pt,a4paper,english,french]{book}
\usepackage{amsmath}        
\newcommand\numberthis{\addtocounter{equation}{1}\tag{\theequation}} % for numbering in  the align* environment
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\usepackage[nameinlink]{cleveref}
\begin{document}
Text
\begin{align*}
a & = b \numberthis \label{eqn413} \\
c & = d \\
e & = f \\
\end{align*}
\newpage
The \cref{eqn413} show that bla bla.
\end{document}

答案1

您应该使用以下方法\refstepcounter{equation}来正确获取链接:

\documentclass[12pt,a4paper,english,french]{book}
\usepackage{amsmath}
\newcommand\numberthis{\refstepcounter{equation}\tag{\theequation}} % for numbering in  the align* environment
\usepackage[colorlinks=true, linkcolor=blue]{hyperref}
\usepackage[nameinlink]{cleveref}
\begin{document}
Text
\begin{align*}
a & = b \numberthis \label{eqn413} \\
c & = d \\
e & = f \\
\end{align*}
\newpage
The \cref{eqn413} show that bla bla.
\end{document}

此外,最好使用类似这样的标签,\label{eq:<some name you will easily remember>}而不是数字。eq表示它是一个方程标签,并且名称对于该方程是唯一的。请参考:这个问题及其答案

相关内容