Alterando a impressão de um contador apenas nas referências

Alterando a impressão de um contador apenas nas referências

Estou com o seguinte problema: tenho um contador (no meu caso enumi) que quero usar para referenciar com um nome diferente de quando aparece primeiro. Existe uma ferramenta em Tex/Latex para fazer isso?

Para ser mais preciso: quero escrever isto no corpo do meu documento:

\section{Lorem}
\subsection{Ipsum}

\begin{enumerate}
\item \label{my_item} dolor sit amet
\item consectetur
\end{enumerate}

e faça com que a lista apareça como:

i) dolor sit amet

ii) consectetur

mas ao usar \ref{my_item}o 1.1.i (assumindo que "Ipsum" seja a subseção 1.1). Então, usando:

\renewcommand{\theenumi} {\bf \arabic{section}.\arabic{subsection}.\roman{enumi}~}

não é o que eu quero.

Responder1

Seu objetivo de formatação pode ser alcançado sem carregar nenhum pacote LaTeX extra (embora não haja, é claro, nada de errado em carregar pacotes adequados). Basta adicionar o seguinte código ao preâmbulo:

\renewcommand\labelenumi{\roman{enumi})} % determine look of label
\renewcommand\theenumi\labelenumi
\makeatletter
\renewcommand\p@enumi{\thesubsection.} % "prefix" for cross-references
\makeatother

Um MWE completo:

insira a descrição da imagem aqui

\documentclass{article} 
\renewcommand\labelenumi{\roman{enumi})}
\renewcommand\theenumi\labelenumi
\makeatletter
\renewcommand\p@enumi{\thesubsection.}
\makeatother
\begin{document} 

\section{Lorem}
\subsection{Ipsum}

\begin{enumerate}
\item \label{my_item} dolor sit amet
\item consectetur
\end{enumerate}

\section{Dolor}

A cross-reference to item \ref{my_item}.
\end{document}

Termo aditivo: A mesma saída pode ser obtida carregando o enumitempacote da seguinte forma:

\usepackage{enumitem}
\setlist[enumerate,1]{label*=\roman*),
                      ref=\thesubsection.\roman*)}

informação relacionada