仅在引用时如何包含带标签的项目?

仅在引用时如何包含带标签的项目?

在文中,我有一些\ref{a}...

最后,我列出了

\item first \label{a}
...
\item last \label{z}

我只想显示第一项。我尝试定义一个自定义引用,以便它还定义一个变量和引用,如下所示:

mycustomref[1] -> \newcommand{#1} \ref{#1}

mycustomlabel -> if a is defined, show the item a

但事实证明\newcommand{#1}这是无效的,因为它实际上将其解释为#1。非常感谢。

答案1

最简单的方法是\@namedef每次\mycustomref使用时使用一个包装器\item,检查该名称是否已被使用。

但是,只有提前完成引用(即在应用自定义项目宏之前),才能以这种方式起作用。

\documentclass{article}

\makeatletter
\newcommand{\mycustomref}[1]{%
  \@namedef{referred::#1}{#1}%
  \ref{#1}%
}

\newcommand{\mycustomitem}[2]{%
  \@ifundefined{referred::#2}{%
  }{\item #1 \label{#2}}
}
\makeatother



\begin{document}

See \mycustomref{foo} %but also \mycustomref{foobar}

\begin{enumerate}
  \mycustomitem{Foo}{foo}
  \mycustomitem{Foobar}{foobar}
\end{enumerate}

\end{document}

相关内容