\autoref{} 打印“定理 2.1”而不是“引理 2.1”。如何更改?

\autoref{} 打印“定理 2.1”而不是“引理 2.1”。如何更改?

我用 \label{lem1} 标记了我的引理,并在之后使用 \autoref{lem1} 引用它。但是,打印出来的却是“定理 2.1”,而实际上应该是“引理 2.1”。我该如何解决这个问题?

\documentclass[a4paper, 12pt, twoside]{thesis}
\usepackage{verbatim} 
\usepackage{amssymb,amsmath}
\usepackage{amsthm,amsfonts,amscd,amsrefs}
\newtheoremstyle{component}{}{}{}{}{\itshape}{.}{.5em}{\thmnote{#3}#1}
    \theoremstyle{component}
    \newtheorem*{component}{}

\begin{document}
\begin{lemma} \label{lem1}
This is a lemma.
\end{lemma}

By \autoref{lem1}, we have..

\end{document}

答案1

该问题与 .cls 文件无关,并且有据可查,例如带有共享计数器的 amsthm 弄乱了 autoref 引用

你可以使用那篇文章中提出的两种解决方案中的任何一种,我建议使用cleveref第二种解决方案。为此,只需包括

\usepackage{cleveref} 

在 .cls 文件中,紧接着

\usepackage{...,amsthm,...}

然后在文档中使用\Cref{lem1}(而不是)。代码如下:autoref

\documentclass{article}
\usepackage{hyperref}
\usepackage{amsthm}
\usepackage{cleveref}
\newtheorem{theorem}{Theorem}
\newtheorem{lemm}[theorem]{Lemma}
\begin{document}

\begin{lemm}\label{lem1}
This is a lemma.
\end{lemm}

By \Cref{lem1}, we have.

\end{document}

如果你不想修改 .cls 文件,一个更简单但不太可靠的解决方案是定义一个\lref用于引理的新命令(然后定义另一个命令 \dref 用于定义等)。

\newcommand\lref[1]{Lemma~\ref{#1}}

我说这不太稳健,因为你总是会犯错误并用来\lref引用,比如说一个定义。

\documentclass{article}
\usepackage{hyperref}
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
\newtheorem{lemm}[theorem]{Lemma}
\newcommand\lref[1]{Lemma~\ref{#1}}
\begin{document}

\begin{lemm}\label{lem1}
This is a lemma.
\end{lemm}

By \lref{lem1}, we have.

\end{document}

相关内容