自定义枚举项的引用样式

自定义枚举项的引用样式

我如何才能实现对以下枚举中第二项的引用是公正的(a)而不是的(1a)

\documentclass{amsart}
\usepackage{enumerate}
\begin{document} 
\begin{enumerate}[(1)]
 \item\label{1} ABCD
 \begin{enumerate}[(a)]
   \item\label{a} xyz
  \end{enumerate}
\end{enumerate}
Now refer to \eqref{a}.
\end{document}

在此处输入图片描述

答案1

在下面amsart引用前缀(用\p@-style 宏表示)的每个级别都enumerate设置为分层的,从而继承了上一级的前缀。您可以在序言中删除此前缀。

在此处输入图片描述

\documentclass{amsart}

\makeatletter
\renewcommand{\p@enumii}{}% Remove prefix for second-level enumerate item
\makeatother

\begin{document} 

\begin{enumerate}
 \item\label{1} ABCD
 \begin{enumerate}
   \item\label{a} xyz
  \end{enumerate}
\end{enumerate}
Now refer to (\ref{a}).

\end{document}

请注意,不需要对标签进行格式化,因为默认设置与您预期的输出相匹配。

答案2

这是一个快速而粗略的方法:\usepackage[shortlabels]{enumitem}用或enumerate来代替。这使用了正确的标签。label={(\alph*)}]\begin{enumerate}[(a)]

\documentclass{amsart}
%\usepackage{enumerate}
\usepackage[shortlabels]{enumitem}
\begin{document} 
\begin{enumerate}[(1),leftmargin=*]
 \item\label{1} ABCD
 \begin{enumerate}[label={(\alph*)}]
   \item\label{a} xyz
  \end{enumerate}
\end{enumerate}
Now refer to \ref{a}.
\end{document}

在此处输入图片描述

相关内容