Я хочу иметь возможность печатать названия своих теорем с помощью автореф. Например, на
\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}