参考文献和重新定义的枚举列表

参考文献和重新定义的枚举列表

我重新定义了\theenumii,这相当简单,但是当我在文中引用它时,\ref{enumi21}下面的结果是 22.1,而不是 2.1。

如果我重新定义\renewcommand{\theenumii}{\theenumi.\arabic{enumii}}\renewcommand{\theenumii}{.\arabic{enumii}}\ref{enumi21}则会正确输出为 2.1,但标签当然会很混乱。

另一方面,如果这能解决问题:

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

文字还可以, \theenumii在文本中返回.1。当然,我永远不需要使用\theenumii,但我只是想了解这背后的逻辑。

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

答案1

这似乎有效:

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

在此处输入图片描述

或者,如果您不想加载chngcntr,请\counterwithin{…}用以下行替换:

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

答案2

\labelenumii如果你问和的含义\theenumii,你会得到

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

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

(我用过texdef)。如果你要求\p@enumii,你会得到

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

这就是问题的关键。在处理标签时,宏\p@enumii被添加到给定的值的前面。\theenumii

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

在此处输入图片描述

相关内容