我希望仅通过较低级别的标签来引用较低级别列表中的项目,而无需使用较高级别的标签作为前缀。例如:
\documentclass{article}
\begin{document}
\begin{enumerate}
\item First level
\begin{enumerate}
\item \label{itm:second} Second level
\end{enumerate}
\end{enumerate}
Reference to the item in the second level appears as \ref{itm:second}.
\end{document}
我希望引用不显示为“1a”,而是显示为“a”;此外,我只希望该行为适用于单个实例(或几个实例)。我不想更改 的默认行为\ref
,也不想更改列表本身的设置(这可以通过这个答案),但对于单个实例,我只想将该项目称为“a”。是否有一些变体\ref
只显示较低级别的标签?否则我应该怎么做?
答案1
您可以定义一个变体,\label
仅在 .aux 文件中写入较低级别的部分,以便在\ref
使用此变体定义的标签进行调用时,仅打印较低级别的标签。
\documentclass{article}
\makeatletter
\newcommand*{\sublabel}[1]{%
\let\old@currentlabel\@currentlabel%
\renewcommand{\@currentlabel}{\theenumii}%
\label{#1}%
\let\@currentlabel\old@currentlabel%
}
\makeatother
\begin{document}
\begin{enumerate}
\item First level
\begin{enumerate}
\item \label{itm:second} \sublabel{itm:secondonly} Second level
\end{enumerate}
\end{enumerate}
Reference to the \verb|\label| of the item in the second level appears as \ref{itm:second}.
Reference to the \verb|\sublabel| of the item in the second level appears as \ref{itm:secondonly}.
\end{document}