автореф на newtheorem

автореф на newtheorem

Я хочу иметь возможность печатать названия своих теорем с помощью автореф. Например, на

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

\autoref{lemma_foo}

Я хочу, чтобы было напечатано что-то вроде «Леммы 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}

Связанный контент