enumitem: использование метки для определенного элемента

enumitem: использование метки для определенного элемента

Всякий раз, когда я пытаюсь маркировать элемент, который определен, это никогда не работает. Например, рассмотрим следующее:

\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}}

Связанный контент