
Redefiní \theenumii
, que es bastante simple, pero cuando hago referencia a él en el texto, el resultado \ref{enumi21}
a continuación es 22.1, en lugar de 2.1.
Si redefino \renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
como \renewcommand{\theenumii}{.\arabic{enumii}}
, \ref{enumi21}
el resultado es correctamente 2.1, pero, por supuesto, la etiqueta está desordenada.
Si por el contrario esto soluciona el problema:
\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\theenumii}{.\arabic{enumii}}
El texto está bien,pero \theenumii
regresa .1
en el texto. Por supuesto, nunca necesitaré usarlo \theenumii
, pero me gustaría entender la lógica detrás de esto.
\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}
Respuesta1
Esto 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, si no desea cargar chngcntr
, reemplace \counterwithin{…}
con esta línea:
\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}
Respuesta2
Si preguntas por el significado de \labelenumii
y \theenumii
, obtendrás
\labelenumii:
\long macro:->(\theenumii )
\theenumii:
\long macro:->\@alph \c@enumii
(Solía texdef
). Si pides \p@enumii
, obtienes
\p@enumii:
\long macro:->\theenumi
y esta es la clave de tu problema. La macro \p@enumii
se antepone al valor dado \theenumii
cuando se procesa la etiqueta.
\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}