hyperref 中的 \autoref 没有显示正确的定理标签

hyperref 中的 \autoref 没有显示正确的定理标签

我正在为 overleaf 上的一门课程写一些讲义。

\documentclass[a4paper,11pt,openany]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb,amsthm}
\usepackage[colorlinks=true]{hyperref}

\theoremstyle{definition}
\newtheorem{theorem}{Theorem}[chapter]
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{example}[theorem]{Example}
\newtheorem*{notation}{Notation}
\newtheorem*{note}{Note}
\newtheorem*{solution}{Solution}

\def\bse{\begin{equation*}}
\def\ese{\end{equation*}}
\def\bp{\begin{proposition}}
\def\ep{\end{proposition}}
\def\bt{\begin{theorem}}
\def\et{\end{theorem}}

\begin{document}

%some text

\bt
\label{t:theorem_bla}
bla
\et

\bp
\label{p:deg}
Let $K\ss L$ be fields and let $\a \in L$ be algebraic over $K$. Then:
\bse
[K(\a):K]=\deg P_{min}(\a,K) \, .
\ese
\ep

%some more text

Hence, by \autoref{p:deg}, we have:

%even more text

\end{document}

我最近才发现\autoref该软件包提供的命令hyperref。我对它非常满意,它很好地显示了我自定义定理环境(引理、介词等)的正确标签。然而,我意识到在某个时候,所有的标签都显示为“定理”。我不记得在这么短的时间内对序言做过任何修改。另外,我读过这个问题: 如何获得定理的正确自动引用 但是,我之前并没有\<name>autorefname在序言中提到过,但它却成功了...我曾尝试在我的 MiKTeX 上编译它,得到了相同的输出,所以这似乎与 Overleaf 无关。

答案1

出现此问题的原因是theorem, 、corollarydefinitionlemmaproposition环境都共享同一个计数器。

我能想到的最快的解决方案是(a)添加指令

\usepackage[noabbrev,capitalize]{cleveref}

加载hyperref包后,(b)将所有实例替换\autoref\cref

另外:我不得不说,您的文档过度使用了\left\right来自动调整“栅栏符号”(圆括号、方括号等)的大小。在我看过的很多情况下,省略\left\right指令肯定是(印刷上)正确的做法。

相关内容