
Eu redefini \theenumii
, o que é bastante simples, mas quando faço referência a ele no texto, o resultado \ref{enumi21}
abaixo é 22,1, em vez de 2,1.
Se eu redefinir \renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
como \renewcommand{\theenumii}{.\arabic{enumii}}
, \ref{enumi21}
a saída será correta como 2.1, mas é claro que o rótulo está confuso.
Se, por outro lado, isso resolver o problema:
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\theenumii}{.\arabic{enumii}}
O texto está OK,mas \theenumii
retorna .1
no texto. É claro que nunca precisarei usar \theenumii
, mas gostaria apenas de entender a lógica por trás disso.
\documentclass{article}
\renewcommand{\labelenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
\begin{document}
\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
\item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}
\ref{enumi1}, \ref{enumi21}.
\theenumii \verb|\theenumii|
\theenumi \verb|\theenumi|
\end{document}
Responder1
Isso parece funcionar:
\documentclass{article}
\usepackage{enumitem}
\setlist[enumerate,2]{label=\theenumi.\arabic*}
\usepackage{chngcntr}
\counterwithin{enumii}{enumi}
\begin{document}
\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
\item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}
See \ref{enumi1}, \ref{enumi21}.
\theenumii \verb|\theenumii|
\theenumi \verb|\theenumi|
\end{document}
Alternativamente, se você não quiser carregar chngcntr
, substitua \counterwithin{…}
por esta linha:
\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
Responder2
Se você perguntar o significado de \labelenumii
e \theenumii
, você obterá
\labelenumii:
\long macro:->(\theenumii )
\theenumii:
\long macro:->\@alph \c@enumii
(Eu usei texdef
). Se você pedir \p@enumii
, você recebe
\p@enumii:
\long macro:->\theenumi
e esta é a chave do seu problema. A macro \p@enumii
é anexada ao valor fornecido por \theenumii
quando o rótulo está sendo processado.
\documentclass{article}
\renewcommand{\labelenumii}{\theenumi.\arabic{enumii}}
\renewcommand{\theenumii}{\arabic{enumii}}
\makeatletter
\renewcommand{\p@enumii}{\theenumi.}
\makeatother
\begin{document}
\begin{enumerate}
\item \label{enumi1}
\item Number 2
\begin{enumerate}
\item Number 2.1 \label{enumi21}
\end{enumerate}
\end{enumerate}
\verb|\ref{enumi1}| $\to$ \ref{enumi1}.
\verb|\ref{enumi21}| $\to$ \ref{enumi21}.
\end{document}