\crefname 枚举的多个层:enumitem 的问题

\crefname 枚举的多个层:enumitem 的问题

我想使用包\crefname中的宏cleveref来设置环境的多个层上的标签名称enumerate。以下代码运行良好:

\documentclass{article}
\usepackage{forloop}
\usepackage{cleveref}

\newcounter{ct}\forloop{ct}{1}%
    {\value{ct}<10}
    {\crefname{enum\roman{ct}}{case}{cases}}

\begin{document}
\begin{enumerate}
\item \label{l} test
\begin{enumerate}
\item test 
\item \label{k} test
\end{enumerate}
\end{enumerate}

\cref{l,k}

\end{document}

enumitem但是,当我使用该包时,它停止工作:

\documentclass{article}
\usepackage{forloop}
\usepackage{enumitem}
\usepackage{cleveref}

\newlist{test}{enumerate}{10}
\setlist[test]{label=\arabic*}

\newcounter{ct}\forloop{ct}{1}%
    {\value{ct}<10}
    {\crefname{test\roman{ct}}{case}{cases}}

\begin{document}
\begin{test}
\item \label{l} test
\begin{test}
\item test 
\item \label{k} test
\end{test}
\end{test}

\cref{l,k}

\end{document}

您可以检查添加\crefname{testi}{case}{cases}确实会正确生成第一个参考标签,所以我不知道为什么这不起作用。如果有人能告诉我出了什么问题以及如何修复它,那就太好了。

答案1

我真的不知道为什么这个东西对enumi等等有用,但给他们一个\crefname全球性的东西绝对是个坏主意。

您正在寻找“别名” testii,,testiii…反引用testi,我相信:

\documentclass{article}
\usepackage{enumitem}
\usepackage{cleveref}

\newlist{test}{enumerate}{10}
\setlist[test]{label*=.\arabic*}
\setlist[test,1]{label=\arabic*}
\crefname{testi}{case}{cases}    

% alias testii, testiii, ... to testi
\count255=1
\loop\ifnum\count255<10
  \advance\count255 1
  \crefalias{test\romannumeral\count255}{testi}    
\repeat

\begin{document}
\begin{test}
\item \label{l} test
\begin{test}
\item test
\item \label{k} test
\end{test}
\end{test}

\cref{l,k}

\end{document}

随意使用不同的循环宏,我不熟悉forloop

我修改了列表计数器,因为不清楚您所指的是哪个级别。

在此处输入图片描述

相关内容