通过编号和名称引用枚举项

通过编号和名称引用枚举项

我目前使用enumitem自动编号来为论文中的几个要求编号。但是,由于每个要求不仅有编号,还有简称,因此在使用\ref(或\cref,如果这样更方便的话)引用它时,我希望输出同时包含这两个内容。

以下是 MWE:

\documentclass{article}
\usepackage{enumitem}

\newcommand*{\req}[1]{\item \emph{#1}\quad}

\begin{document}

\begin{enumerate}[label=R \arabic*,widest*=20,leftmargin=*,series=reqs]
\req{First One} First requirement.
\req{Other One} \label{req:other_one} Some other requirement.
\end{enumerate}

Some text....

\begin{enumerate}[resume*=reqs]
\req{Yet Another Requirement} Text.
\end{enumerate}

As mentioned in \ref{req:other_one}, ...

\end{document}

在最后一行,它目前只显示“如 R 2 中所述”。我想要实现的是“如 R 2(其他)中所述”。

答案1

如果所有参考文献都是“R 2(其他)”的形式,您可以通过将所需文本添加到来实现\@currentlabel

\documentclass{article}
\usepackage{enumitem}
\usepackage{etoolbox}

\makeatletter
\newcommand*{\req}[1]{%
  \item
  \appto\@currentlabel{ (#1)}%
  \emph{#1}\quad}
\makeatother

\begin{document}

\begin{enumerate}[label=R~\arabic*,widest*=20,leftmargin=*,series=reqs]
\req{First One} First requirement.
\req{Other One} \label{req:other_one} Some other requirement.
\end{enumerate}

Some text....

\begin{enumerate}[resume*=reqs]
\req{Yet Another Requirement} Text.
\end{enumerate}

As mentioned in \ref{req:other_one}, ...

\end{document}

R注意和数字之间的联系。

如果要在“R 2(其他)”和“R 2”这两种形式之间进行选择,那么要么定义两个标签,这很笨拙,要么使用不同的命令来引用要求:

\documentclass{article}
\usepackage{enumitem,etoolbox}

\makeatletter
\newcommand*{\req}[1]{%
  \item
  \appto\@currentlabel{\req@print{#1}}%
  \emph{#1}\quad}
\newif\if@reqprint
\newrobustcmd{\reqref}{%
  \@ifstar{\@reqprintfalse\ref}{\@reqprinttrue\ref}%
}
\newrobustcmd{\req@print}[1]{\if@reqprint\ (#1)\fi}
\makeatother

\begin{document}

\begin{enumerate}[label=R~\arabic*,widest*=20,leftmargin=*,series=reqs]
\req{First One} \label{req:first_one} First requirement.
\req{Other One} \label{req:other_one} Some other requirement.
\end{enumerate}

Some text....

\begin{enumerate}[resume*=reqs]
\req{Yet Another Requirement} Text.
\end{enumerate}

As mentioned in \reqref{req:other_one}, and in \reqref*{req:first_one}

\end{document}

在此处输入图片描述

相关内容