用于在嵌套列表中某些项目前添加星号的命令,与级别无关

用于在嵌套列表中某些项目前添加星号的命令,与级别无关

我正在使用 enumitem 包来处理列表,在某些情况下是嵌套列表。我想定义一个命令\staritem,在项目前添加星号,而不依赖于知道嵌套列表的级别。例如,代码

\documentclass{article}
\usepackage{enumitem}

\newcommand\staritem{???}

\begin{document}

\begin{enumerate}[label=(\alph*)]
 \item Item 1
 \staritem Item 2
 \item Item 3
 \begin{enumerate}[label=(\roman*)]
  \item Item 3.1
  \item Item 3.2
  \staritem Item 3.3
 \end{enumerate}
\end{enumerate}

\end{document}

应该输出:

(a)第 1 项

*(b)第 2 项

(c)第 3 项

(一)第3.1项

(二)第3.2项

*(三)第3.3项

我知道这一点\item[*\theenumi]\item[*\theenumii]能做这项工作,但我希望能够灵活地不告知嵌套枚举环境的级别。

答案1

当前计数器名称可以作为 访问\@enumctr

\@currentlabel如果您不希望带星号的项目的交叉引用带有 *,请删除该行。

\documentclass{article}
\usepackage{enumitem}

\makeatletter
\newcommand\staritem{%
  \par\refstepcounter{\@enumctr}%
  \edef\@currentlabel{*\@currentlabel}%
  \item[{\makebox[0pt][r]{*}}\csname the\@enumctr\endcsname]%
}
\makeatother

\begin{document}

\ref{test}

\begin{enumerate}[label=(\alph*)]
 \item Item 1
 \staritem\label{test} Item 2
 \item Item 3
 \begin{enumerate}[label=(\roman*)]
  \item Item 3.1
  \item Item 3.2
  \staritem Item 3.3
 \end{enumerate}
\end{enumerate}

\end{document}

在此处输入图片描述

答案2

你可以使用这个:

\documentclass{article}
\usepackage{enumitem}

\newcommand\staritem{\item[*\csname theenum\roman{enumi}\endcsname]}

\begin{document}

\begin{enumerate}[label=(\alph*)]
 \item Item 1
 \staritem Item 2
 \item Item 3
 \begin{enumerate}[label=(\roman*)]
  \item Item 3.1
  \item Item 3.2
  \staritem Item 3.3
 \end{enumerate}
\end{enumerate}

\end{document}

截屏:

在此处输入图片描述

相关内容