关于 enumitem 包中自定义 ref 的一个问题

关于 enumitem 包中自定义 ref 的一个问题

我正在尝试枚举项版本 3.4(2011 年 8 月发布)有点但在定制时面临问题ref

我想要达到的目的很简单:在表单中有列表标签1.1.3.例如。使用label*键很容易。但是,我不希望引用采用与标签相同的形式。这是因为末尾的(.)出现在句子中间不方便。

因此我定义列表如下:

\newlist{procedureflow}{enumerate}{2}
\setlist[procedureflow,1]{label*=\color{blue!80!black}\arabic*.,ref=\arabic*}
\setlist[procedureflow,2]{label*=\color{green!80!black}\arabic*.,ref=\arabic{enumi}.\arabic*}

上述代码的问题在于,该部分ref=\arabic{enumi}.\arabic*使用当前值进行评估,enumi而该当前值当然与源文件中稍后出现的列表无关:(

以下是创建列表的代码:

\begin{procedureflow}
    \item First
    \item Second
    \begin{procedureflow}
         \item First First
         \item Second Second\label{mylabel}
    \end{procedureflow}
\end{procedureflow}
Here is a cross reference: \ref{mylabel}

enumitem 的用户指南(第 5 章,第 9 页)中有类似的例子,所以我想知道如何使用键ref将引用显示为1.1.3(即没有在最后)?(我觉得这方面有些不对劲enumitem!至少这个例子对我来说没用)

答案1

我用你的代码片段构建了一个最小示例。

\listfiles
\listfiles
\documentclass[12pt,]{article}
\usepackage{xcolor}
\usepackage{enumitem}
\newlist{procedureflow}{enumerate}{2}
\setlist[procedureflow,1]{label*=\color{blue!80!black}\arabic*.,ref=\arabic*}
\setlist[procedureflow,2]{label*=\color{green!80!black}\arabic*.,ref=\arabic{procedureflowi}.\arabic*}
\begin{document}
\begin{procedureflow}
    \item First
    \item Second
    \begin{procedureflow}
         \item First First
         \item Second Second\label{mylabel}
    \end{procedureflow}
\end{procedureflow}
Here is a cross reference: \ref{mylabel}
\end{document}

使用这个版本

enumitem.sty 2011/08/06 v3.4 Customized lists

您必须使用正确的计数器:procedureflowi

答案2

尝试这个:

\newlist{procedureflow}{enumerate}{3}
    
\setlist[procedureflow]{label*={\color{blue!60!red}\arabic*.},ref=\arabic*}
    
\setlist[procedureflow,2]{label*={\color{green!80!black}\arabic*.}}
    

相关内容