每当我尝试标记已定义的项目时,它似乎总是不起作用。例如,考虑以下内容:
\documentclass{article}
\usepackage{enumitem}
\usepackage[noabbrev]{cleveref}
\begin{document}
\begin{enumerate}
\item[3.1]
\item[6.3]
\label{prob63}
\item
From \cref{prob63}, some statement
\end{enumerate}
\end{document}
答案1
我认为这可能部分是因为在使用可选参数时可以使用非计数器样式的条目\item[<stuff>]
。因此,在这方面,您可以手动设置它,以便引用按您想要的方式显示:
\documentclass{article}
\usepackage{enumitem}
\usepackage[noabbrev]{cleveref}
\makeatletter
\newcommand{\setcreflabel}[1]{%
\protected@edef\cref@currentlabel{%
[\@tempa][#1][\cref@result]%
#1}}%
\makeatother
\begin{document}
\begin{enumerate}
\item \label{prob1}
\item[6.3] \setcreflabel{6.3}\label{prob63}
\item
From \cref{prob63}, some statement; From \cref{prob1}, some statement.
\end{enumerate}
\end{document}
这里的动机是以类似于更新 的\cref@currentlabel
方式进行更新。这样,当您发出 时,正确的参考内容将写入:\refstepcounter
\@currentlabel
\label
.aux
\relax
\newlabel{prob1}{{1}{1}}
\newlabel{prob1@cref}{{[enumi][1][]1}{1}}
\newlabel{prob63}{{1}{1}}
\newlabel{prob63@cref}{{[enumi][6.3][]6.3}{1}}