Referenzen und neu definierte Aufzählungslisten

Referenzen und neu definierte Aufzählungslisten

Ich habe neu definiert \theenumii, was ziemlich einfach ist, aber wenn ich im Text darauf verweise, \ref{enumi21}ist das Ergebnis unten 22,1 statt 2,1.

Wenn ich \renewcommand{\theenumii}{\theenumi.\arabic{enumii}}als neu definiere \renewcommand{\theenumii}{.\arabic{enumii}}, \ref{enumi21}wird korrekt 2.1 ausgegeben, aber dann ist das Etikett natürlich unordentlich.

Wenn das Problem dadurch hingegen gelöst wird:

\renewcommand{\labelenumii}{\arabic{enumi}.\arabic{enumii}}
\renewcommand{\theenumii}{.\arabic{enumii}}

Der Text ist ok,Aber \theenumiiRückgaben .1im Text. Natürlich werde ich nie verwenden müssen \theenumii, aber ich möchte einfach die Logik dahinter verstehen.

\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}

Antwort1

Das scheint zu funktionieren:

\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} 

Bildbeschreibung hier eingeben

Wenn Sie nicht laden möchten chngcntr, ersetzen Sie es alternativ \counterwithin{…}durch diese Zeile:

\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}

Antwort2

Wenn Sie nach der Bedeutung von \labelenumiiund fragen \theenumii, erhalten Sie

\labelenumii:
\long macro:->(\theenumii )

\theenumii:
\long macro:->\@alph \c@enumii 

(Ich habe verwendet texdef). Wenn Sie nach fragen \p@enumii, erhalten Sie

\p@enumii:
\long macro:->\theenumi 

und hier liegt der Schlüssel zu Ihrem Problem. Das Makro \p@enumiiwird dem Wert vorangestellt, der \theenumiibei der Verarbeitung des Etiketts angegeben wird.

\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}

Bildbeschreibung hier eingeben

verwandte Informationen