如何定义自定义变量 cref 名称?

如何定义自定义变量 cref 名称?

我正在尝试通过定理包为引理设置名称,以便我可以命名引理。这是因为记住引理 15 与引理 4 的作用很困难。因此,我想命名每个引理,并为引理的每个类别/名称(例如数学和逻辑)设置一个单独的计数器。这种方法有两个问题。

  • 我无法在“引理”和计数器之间添加文本(我想要引理逻辑 1)
  • 我无法让 cleverref ( \cref) 使用该名称,以便\cref{lmm:test1}得到“引理逻辑 1”。
\begin{document}

\begin{lemma}{Logic}
    If $P$ then $Q$.
    \label{lmm:test1}
\end{lemma}

\begin{lemma}{Logic}
    If $Q$ then $R$.
    \label{lmm:test2}
\end{lemma}

\begin{lemma}{Math}
    $2+2=4$
    \label{lmm:test3}
\end{lemma}

\begin{lemma}{Logic}
    If $R$ then $S$
    \label{lmm:test4}
\end{lemma}


Text \cref{lmm:test1} goes \cref{lmm:test2} in \cref{lmm:test3} here \cref{lmm:test4}. 


\end{document}

使用 vanilla mtheorem 包和 \newtheorem{lemma} 的图像

我尝试不使用 mtheorem 包,而是在其中定义了自己的引理命令,如下所示:

\makeatletter
\newcommand*\ifcounter[1]{%
  \ifcsname c@#1\endcsname
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}
\makeatother

\newcommand{\lemma}[1]{
    \ifcounter{#1}{
        \stepcounter{#1}
    }{
        \newcounter{#1}
        \setcounter{#1}{0}
        \refstepcounter{#1}
        \crefname{#1}{lemma #1}{lemmas #1}
        \Crefname{#1}{Lemma #1}{Lemmas #1} 
    }

    \paragraph{Lemma #1 \arabic{#1}}
}

这会导致词干本身的格式正确,但会破坏 cref。

在此处输入图片描述

是否有(更干净的)方法或甚至更好的格式来实现这一点?

相关内容