Wenn ich versuche, ein definiertes Element zu beschriften, scheint es nie zu funktionieren. Betrachten Sie beispielsweise Folgendes:
\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}
Antwort1
Ich denke, das liegt teilweise daran, dass man Einträge verwenden kann, die nicht im Zählerstil sind, wenn man das optionale Argument to verwendet \item[<stuff>]
. In dieser Hinsicht können Sie dies also manuell einstellen, damit die Referenz wie gewünscht angezeigt wird:
\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}
Die Motivation besteht hier darin, auf analoge Weise zu aktualisieren, \cref@currentlabel
wie \refstepcounter
updates ausgeführt werden \@currentlabel
. Auf diese Weise wird beim Ausgeben \label
der korrekte Referenzinhalt in Folgendes geschrieben .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}}