\autoref 似乎无法正常工作

\autoref 似乎无法正常工作

\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}

在此处输入图片描述

相关内容