在文中,我有一些\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}