我希望能够仅通过最内层的标识字符来引用嵌套的枚举列表项。
\begin{enumerate}[(1)]
\item
\begin{enumerate}[(a)]
\item \label{mylabel} Referenced point.
\end{enumerate}
\end{enumerate}
...
\ref{mylabel}
上面\ref
给了我类似的内容1a
,但我希望它只给我a
。
答案1
在 LaTeX 中,内部宏\p@enumN\theenumN
定义命令的输出\ref
。(参考source2e
)标准文档类中的默认定义是(参考classes
):
\renewcommand\theenumi{\@arabic\c@enumi}
\renewcommand\theenumii{\@alph\c@enumii}
\renewcommand\theenumiii{\@roman\c@enumiii}
\renewcommand\theenumiv{\@Alph\c@enumiv}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi(\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
您可以重新定义\p@enumii
以获得您想要的:
\makeatletter % for internal macros with @
\renewcommand\p@enumii{}
\makeatother
似乎您正在使用enumerate
包来更改标签。但是,enumerate
不能很好地处理交叉引用。我建议使用更现代的包enumitem
来替换enumerate
,这也可以使用键值语法来缓解问题。例如:
% \usepackage{enumitem} % in preamble
\begin{enumerate}[label=(\arabic*)]
\item
\begin{enumerate}[label=(\alph*),ref=\alph*]
\item \label{mylabel} Referenced point.
\end{enumerate}
\end{enumerate}