![关于 enumitem 包中自定义 ref 的一个问题](https://linux22.com/image/240021/%E5%85%B3%E4%BA%8E%20enumitem%20%E5%8C%85%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89%20ref%20%E7%9A%84%E4%B8%80%E4%B8%AA%E9%97%AE%E9%A2%98.png)
我正在尝试枚举项版本 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*.}}