Quero poder imprimir os nomes dos meus próprios teoremas com autoref. Por exemplo, em
\begin{lemma}
\label{lemma_foo}
Some lemma
\end{lemma}
\autoref{lemma_foo}
Quero que algo como "Lema 3.2" seja impresso.
Minha abordagem atual é:
\newtheorem{lemma}{Lemma}[chapter]
\newcommand{\lemmaautorefname}{Lemma}
\newtheorem{definition}[lemma]{Definition}
\newcommand{\definitionautorefname}{Definition}
A definição compartilha o contador com o lema, o que se pretende, mas tem o efeito colateral, de que referenciar definições resulta em elas serem chamadas de lemas.
Como faço para corrigir isso?
Responder1
Contanto que os lemma
ambientes definition
e sejam definidosdepoisos pacotes hyperref
e cleveref
são carregados, usando \cref
em vez de \autoref
deve fornecer o que você deseja.
\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}
Responder2
Consegui fazer isso funcionar com \autoref, mas só permitirá que os contadores contem para cada tipo. Então você teria a Definição 1.1 e depois a Definição 1.2 e se você adicionar um lema depois desse Lema 1.1. Pode ser aceitável.
\newtheorem{lemma}{Lemma}[section]
\newtheorem{definition}{Definition}[section]
\newcommand{\lemmaautorefname}{Lemma}
\newcommand{\definitionautorefname}{Definition}