在 enumitem 内联列表中引用自定义标签项

在 enumitem 内联列表中引用自定义标签项

我想要一个列表,其中大多数项目使用标准标签,但有一两个项目有自定义标签。我希望能够引用每个项目并显示其标签。我使用enumitem,这一切都适用于非内联列表:

\documentclass{article}

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

\begin{document}

\begin{enumerate}
\item \label{1} Item one
\myitem[A] \label{A} Item A
\item \label{3} Item three
\end{enumerate}

\ref{1} \ref{A} \ref{3}

\end{document}

产生输出

1. Item one
A Item A
2. Item three
1 A 2

这正是我想要的。但是,我真正想做的是将其放在内联列表中,如果我更改enumerateenumerate*\ref{A}则打印 1 而不是 A。

我猜测内联列表可能不会使用\@currentlabel或者以不同的方式使用它,但我不知道该怎么做。

答案1

内联列表是方框,因此您的定义会丢失。请使用 mode=unboxed 或移动 \@currentlabel 定义,使其更靠近标签:

\documentclass{article}

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

\begin{document}

\begin{enumerate*}%[mode=unboxed] %would work too
\item \label{1} Item one
\myitem[A] \label{A} Item A
\item \label{3} Item three
\end{enumerate*}

\ref{1} \ref{A} \ref{3}

\end{document}

enter image description here

相关内容