枚举、标签和引用中的自定义项

枚举、标签和引用中的自定义项

应显示以下 MWE

(2)测试

(2')测试

参考(2')。

但最后一行只说“参考”,没有引用。我该如何达到想要的效果?

\documentclass[a4paper,12pt]{article}
\usepackage{enumerate}

\begin{document}

\begin{enumerate}
  \item[(2)]\label{item:2} Test
  \item[(2')]\label{item:2p} Test
  \end{enumerate}
  Reference to \ref{item:2p}.
\end{document}

答案1

由于\item[foo]没有使用 增加enumi计数器(这里是enumerate第一级的环境)\refstepcounter\label命令无法应用正确的参考“数字”——这是由宏生成\refstepcounter并存储在\@currentlabel宏中——不\refstepcounter意味着\@currentlabel这里是空的。

一种方法是使用包装器命令,并将\myitem参数存储为\@currentlabel值。这样,\label就可以按预期工作。

由于\@currentlabel是一个@- 字母 - 命令,因此该\makeatletter...\makeatother对必须围绕 的定义\myitem

当然,的名称\myitem有点任意,只要不使用已经存在的命令序列或原语的名称即可。

\documentclass[a4paper,12pt]{article}
\usepackage{enumerate}

\makeatletter
\newcommand{\myitem}[1]{%
\item[#1]\protected@edef\@currentlabel{#1}%
}
\makeatother

\begin{document}

\begin{enumerate}
  \myitem{(2)}\label{item:2} Test
  \myitem{(2')}\label{item:2p} Test
  \end{enumerate}
  Reference to \ref{item:2} and \ref{item:2p}
\end{document}

在此处输入图片描述

相关内容