仅通过使用下级标签来引用下级列表中的单个实例

仅通过使用下级标签来引用下级列表中的单个实例

我希望仅通过较低级别的标签来引用较低级别列表中的项目,而无需使用较高级别的标签作为前缀。例如:

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

相关内容