我的“newcounter”依赖于包“\usepackage[capitalize]{cleveref}”,如何解决这个问题?

我的“newcounter”依赖于包“\usepackage[capitalize]{cleveref}”,如何解决这个问题?

问题出在计数器‘jrule’中,如下所示: 为什么‘分裂’与我的反击冲突?

我有这个文件:

\documentclass{article}
\usepackage{mathtools}
\usepackage[capitalize]{cleveref}
\begin{document}
\newcounter{rule}
\newcommand\rrule[1]{{\bfseries\sffamily R\ref{rule:#1}}}
\makeatletter\newcommand\jrule[1]{%
  \refstepcounter{rule}%
  \ltx@label{rule:#1}%
  \text{\rrule{#1}}}\makeatother%
\section{Intro}
\subsection{Overview}
\begin{equation*}
\dfrac{x + y}{z - f}\jrule{1}
\end{equation*}
\end{document}

这里,\jrule工作情况如下: 在此处输入图片描述

但如果我删除\usepackage[capitalize]{cleveref},它就可以正常工作: 在此处输入图片描述

我怎样才能解决这个问题而不删除“cleveref”包?

答案1

cleveref包重新定义了标准label命令以具有可选参数。 仅在以后才amsmath这样做\let\ltx@label=\label

\documentclass{article}
\usepackage{mathtools}
\usepackage[capitalize]{cleveref}

\newcounter{rule}
\crefname{rule}{rule}{rules}
\Crefname{rule}{Rule}{Rules}

\newcommand\rrule[1]{{\bfseries\sffamily R\ref{rule:#1}}}


\makeatletter
\newcommand\jrule[1]{%
  \refstepcounter{rule}%
  \ltx@label[rule]{rule:#1}%
  \textnormal{\rrule{#1}}%
}
\makeatother

\begin{document}

\section{Intro}

\subsection{Overview}

\begin{equation*}
\dfrac{x + y}{z - f}\jrule{1}
\end{equation*}

See~\cref{rule:1}.

\end{document}

在此处输入图片描述

避免在之后定义命令\begin{document}

相关内容