我正在尝试通过定理包为引理设置名称,以便我可以命名引理。这是因为记住引理 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}
我尝试不使用 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。
是否有(更干净的)方法或甚至更好的格式来实现这一点?