newtheorem の autoref

newtheorem の autoref

私は自分の定理の名前をautorefで印刷できるようにしたい。例えば

\begin{lemma}
\label{lemma_foo}
  Some lemma
\end{lemma}

\autoref{lemma_foo}

「Lemma 3.2」のようなものが印刷されるようにしたいです。

私の現在のアプローチは次のとおりです。

\newtheorem{lemma}{Lemma}[chapter]
\newcommand{\lemmaautorefname}{Lemma}

\newtheorem{definition}[lemma]{Definition}
\newcommand{\definitionautorefname}{Definition}

定義は、補題とカウンターを共有します。これは意図されたことですが、定義を参照すると、補題と呼ばれるという副作用があります。

これを修正するにはどうすればいいでしょうか?

答え1

lemma環境definitionが定義されている限りおよびパッケージがロードされたら、の代わりにを使用するとhyperref、必要な結果が得られます。cleveref\cref\autoref

ここに画像の説明を入力してください

\documentclass{report} % or 'book'?
\usepackage{ntheorem}  % or 'amsthm'?
\usepackage[colorlinks]{hyperref}
\usepackage[capitalize,nameinlink,noabbrev]{cleveref} % to emulate \autoref style

\newtheorem{lemma}{Lemma}[chapter]
\newcommand{\lemmaautorefname}{Lemma}
\newtheorem{definition}[lemma]{Definition}
\newcommand{\definitionautorefname}{Definition}

\setcounter{chapter}{1} % just for this example

\begin{document}
\begin{lemma}
\label{lemma_foo}
  Some lemma
\end{lemma}
\autoref{lemma_foo}  (correct) and \cref{lemma_foo} (correct) \dots

\begin{definition}
\label{definition_bar}
  A definition
\end{definition}
\autoref{definition_bar} (incorrect) and \cref{definition_bar} (correct) \dots

\end{document}

答え2

私はこれを \autoref で動作させることに成功しましたが、カウンターは各タイプに対してのみカウントできます。したがって、定義 1.1 の次に定義 1.2 があり、その後に補題を追加すると補題 1.1 になります。これは許容できるかもしれません。

\newtheorem{lemma}{Lemma}[section]
\newtheorem{definition}{Definition}[section]

\newcommand{\lemmaautorefname}{Lemma}
\newcommand{\definitionautorefname}{Definition}

関連情報