如何交叉引用嵌套的枚举列表?(使用 cleveref 进行高级交叉引用格式化)

如何交叉引用嵌套的枚举列表?(使用 cleveref 进行高级交叉引用格式化)

我需要引用嵌套的枚举列表,并且如果连续提到较低级别的几个点,则不想重复最高级别。因此,不要使用像

1.1a(一)、1.1b、1.1c

我希望得到以下结果

1.1a(一)、b、c

不幸的是,我找不到合适的解决方案。这是一个基于标准cleveref方法的 MWE,它产生了一个奇怪的结果:

\documentclass[ngerman, 12pt]{article}
\usepackage{enumitem}
\usepackage{cleveref}
\parindent0pt

\labelcrefmultiformat{enumi}%
{\edef\crefstripprefixinfo{#1}#2#1#3}%
{ and~#2\crefstripprefix{\crefstripprefixinfo}{#1}#3}%
{, #2\crefstripprefix{\crefstripprefixinfo}{#1}#3}%
{, and~#2\crefstripprefix{\crefstripprefixinfo}{#1}#3}

\setlist[1]{leftmargin=*}
\setlist[2]{label=\alph*}
\setlist[3]{label=(\roman*)}

\begin{document}

\section{References}
\begin{enumerate}[ref=\thesection.\arabic*]
\item Fruits
\begin{enumerate}[ref=\theenumi\alph*]
\item \label{en:apples} Apples
\begin{enumerate}[ref=\theenumii(\roman*)]
\item \label{en:red} Red Apples
\item \label{en:green} Green Apples
\end{enumerate}
\item \label{en:bananas} Bananas
\item \label{en:pears} Pears
\end{enumerate}
\item \label{en:vegetables} Vegetables
\end{enumerate}
Now, I would like to reference to \labelcref{en:red,,en:bananas,,en:pears,,en:vegetables}.\\
\end{document}

代替

1.1a(i)、b、c 和 1.2。

我得到以下奇怪的结果:

1.1a(i)、11.1b、11.1c 和 1.2

但是,如果我不使用最低级别,而是用以下代码替换引用,那么它可以正常工作:

\labelcref{en:apples,,en:bananas,,en:pears,,en:vegetables}.

有人知道吗,如何解决最低级别的这个问题?

相关内容