
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 \theenumii
Rückgaben .1
im 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}
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 \labelenumii
und 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@enumii
wird dem Wert vorangestellt, der \theenumii
bei 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}