我正在使用cleveref 包格式化文档中的引用。但是,我在为引用枚举列表(尤其是嵌套列表)的标签实现不同的格式时遇到了困难。
这是一个简单的例子:
\documentclass{article}
\usepackage{enumerate}
\usepackage{cleveref}
\creflabelformat{enumi}{#1(#2)#3}
\creflabelformat{enumii}{#1(#2)#3}
\begin{document}
\begin{enumerate}[(i)]
\item\label{fi} The first item
\item the second item
\begin{enumerate}[(a)]
\item the first sub-item
\item\label{ssi} the second sub-item
\end{enumerate}
\end{enumerate}
This is a fancy reference to the first item: \labelcref{fi}.
The second sub-item can be referred to as \labelcref{ssi}.
\end{document}
理想情况下,我希望第一个参考文献的格式为 (i),第二个参考文献的格式为 (ii-b)。
实际输出如下:
我们可以看到,两个标签看起来不同,是 i() 而不是 (i);是 iib 而不是 (b) [我不知道如何使用 `creflabelformat 来获取 (ii-b),所以我选择了 (b) 但即使这样也不起作用。]
我知道有几个问题,有些是最近的,询问有关列表项引用的格式,但它们并没有真正帮助我。
非常感谢。
答案1
您可以使用包中的label
,键来控制标签和引用的格式(我为第三和第四个嵌套级别添加了一些设置只是为了说明):ref
enumitem
\documentclass{article}
\usepackage{enumitem}
\usepackage{cleveref}
\setlist[enumerate,1]{label=(\roman*),ref=(\roman*)}
\setlist[enumerate,2]{label=(\alph*),ref=(\roman{enumi}-\alph*)}
\setlist[enumerate,3]{label=(\Alph*),ref=(\roman{enumi}-\alph{enumii}-\Alph*)}
\setlist[enumerate,4]{label=(\arabic*),ref=(\roman{enumi}-\alph{enumii}-\Alph{enumiii}-\arabic*)}
\begin{document}
\begin{enumerate}
\item\label{fi} The first item
\item the second item
\begin{enumerate}
\item the first sub-item
\item\label{ssi} the second sub-item
\begin{enumerate}
\item\label{fssi} the first subsub-item
\begin{enumerate}
\item the first subsubsub-item
\item\label{ssssi} the second subsubsub-item
\end{enumerate}
\item the second subsub-item
\end{enumerate}
\end{enumerate}
\end{enumerate}
This is a fancy reference to the first item: \cref{fi}.
The second sub-item can be referred to as \cref{ssi}.
The second subsub-item can be referred to as \cref{fssi}.
The second subsubsub-item can be referred to as \cref{ssssi}.
\end{document}