![\autoref 似乎无法正常工作](https://linux22.com/image/315742/%5Cautoref%20%E4%BC%BC%E4%B9%8E%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
\autoref
似乎无法正常工作。每当我使用它时,我只会得到数字,而不是定理/命题/引理等,即,
It follows from \autoref{aaa}
作为
从 1.1 可知
并不是
根据定理 1.1
答案1
您必须使用 来指定\autoref
要使用的名称\<name>autorefname
,其中<name>
是您为结构使用的名称。完整的示例:
\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\newtheorem{ttt}{Theorem}
\providecommand*\tttautorefname{Theorem}
\begin{document}
\begin{ttt}
\label{aaa}
test
\end{ttt}
\autoref{aaa}
\end{document}
结果:
如果您没有在上面的示例中提供名称,hyperref
将会发出警告:
Package hyperref Warning: No autoref name for `ttt' on input line 14.
更新
如果您拥有共享计数器的结构,则需要做更多工作:该包aliascnt
提供了一种方法来生成模拟的第二个计数器,以便区分共享计数器的不同结构。举个小例子:
\documentclass{article}
\usepackage{amsthm}
\usepackage{aliascnt}
\usepackage{hyperref}
\newtheorem{theo}{Theorem}
\newaliascnt{lemma}{theo}
\newtheorem{lemma}[lemma]{Lemma}
\aliascntresetthe{lemma}
\providecommand*{\theoautorefname}{Theorem}
\providecommand*{\lemmaautorefname}{Lemma}
\begin{document}
\begin{theo}
\label{aaa}
test
\end{theo}
\begin{lemma}
\label{bbb}
test
\end{lemma}
\autoref{aaa}\autoref{bbb}
\end{document}
特别注意线条
\newaliascnt{lemma}{theo}
\newtheorem{lemma}[lemma]{Lemma}
\aliascntresetthe{lemma}
特别注意,对于结构lemma
,可选参数具有上面一行中定义的别名计数器,而不是定理的计数器。
使用cleveref
可能是一个更简单的选择:
\documentclass{article}
\usepackage{amsthm}
\usepackage{hyperref}
\usepackage{cleveref}
\newtheorem{theo}{Theorem}
\newtheorem{lemma}[theo]{Lemma}
\begin{document}
\begin{theo}
\label{aaa}
test
\end{theo}
\begin{lemma}
\label{bbb}
test
\end{lemma}
\Cref{aaa}\Cref{bbb}
\cref{aaa}\cref{bbb}
\end{document}