![hyperref 中的 \autoref 没有显示正确的定理标签](https://linux22.com/image/334265/hyperref%20%E4%B8%AD%E7%9A%84%20%5Cautoref%20%E6%B2%A1%E6%9C%89%E6%98%BE%E7%A4%BA%E6%AD%A3%E7%A1%AE%E7%9A%84%E5%AE%9A%E7%90%86%E6%A0%87%E7%AD%BE.png)
我正在为 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
, 、corollary
、definition
、lemma
和proposition
环境都共享同一个计数器。
我能想到的最快的解决方案是(a)添加指令
\usepackage[noabbrev,capitalize]{cleveref}
加载hyperref
包后,(b)将所有实例替换\autoref
为\cref
。
另外:我不得不说,您的文档过度使用了\left
和\right
来自动调整“栅栏符号”(圆括号、方括号等)的大小。在我看过的很多情况下,省略\left
和\right
指令肯定是(印刷上)正确的做法。