![使用 \cref 和 package{amsmath} 时方程引用未定义](https://linux22.com/image/280354/%E4%BD%BF%E7%94%A8%20%5Ccref%20%E5%92%8C%20package%7Bamsmath%7D%20%E6%97%B6%E6%96%B9%E7%A8%8B%E5%BC%95%E7%94%A8%E6%9C%AA%E5%AE%9A%E4%B9%89.png)
当我尝试\cref{..}
使用 amsmath 包引用方程式时,引用会像??
输出的 pdf 中那样出现。例如
\documentclass[]{article}
\usepackage{graphicx}
\usepackage{cleveref} %for cref
\usepackage{amsmath} %for sub equation numbers and words within equations (\text)
\begin{document}
\section{Introduction}
\begin{equation}\label{eq:solve}
x^2 - 5 x + 6 = 0
\end{equation}
Ref: \ref{eq:solve}
CRef: \cref{eq:solve}
\end{document}
我得到输出:
然而,如果\usepackage{amsmath}
注释掉它就\cref
可以正常工作。
是否可以成功结合使用两者?
答案1
我尝试寻找有同样问题的其他问题,但一无所获。所以这里有一个答案:cleveref
最后加载。
来自文档:
该
cleveref
包以通常的方式加载,通过将行\usepackage{cleveref}
在文档的序言中。但是,在
cleveref
与其他修改 LaTeX 引用系统的软件包一起使用时必须小心(参见第 11 节)。基本上,必须加载 cleveref最后的。
问题是,amsmath
为了应对,修改了引用系统\tag
。因此,cleveref
必须挂接到重新定义的宏,而不是原始宏。通过加载amsmath
后,cleveref
您不会让包有机会知道amsmath
是否也请求了。