我希望定理和引理在文本中被称为“定理 1”和“推论 2”,并共享同一个计数器。当我使用普通文章文档类时,这种方法很有效,但当我必须使用自定义利皮克斯会议要求我使用的格式。(需要下载并解压与 MWE 相同的文件夹中的 .tgz 文件)。
以下是 MWE:
\documentclass[a4paper,UKenglish]{lipics}
\usepackage{amsthm, cleveref}
\crefname{theorem}{theorem}{theorems}
\crefname{corollary}{corollary}{corollaries}
\newtheorem{theorem}{Theorem}[section]
\newtheorem{corollary}[theorem]{Corollary}
\begin{document}
\section{Section title}
\begin{theorem}\label{thm:test}
Here is the theorem.
\end{theorem}
\begin{corollary}\label{cor:test}
Here is the corollary.
\end{corollary}
The theorem reference is given by \cref{thm:test} and the corollary reference is given by \cref{cor:test}.
\end{document}
我读了这里在加载 cleveref 后需要声明 newtheorem 命令,但我发现问题在于 lipics.cls 一开始就在类文件中声明了它们。那么,在加载 cleveref 后,我有什么办法可以重新声明 newtheorem 命令吗?
这是我目前得到的输出:
我该如何修正它才能使推论引用正确呢?
答案1
找到了一个相当粗糙但有效的解决方案:我在文档中加载 cleveref 后定义了 lemma、theorem,但使用了不同的关键字(lemma
become lem
、theorem
isthm
等等)。我确保新环境与 中定义的默认环境一致lipics.cls
,因此 pdf 文件看起来完全相同,好处是我不再需要使用它们了\ref
!这似乎是解决这个问题的唯一方法——如果有人找到一种不那么粗糙、更 DRY 的方法,我会很高兴!
答案2
如果cleveref
在之后立即加载amsthm
(即在任何之前newtheorem
),那么它就可以工作。
\RequirePackage{afterpackage}
\AfterPackage{amsthm}{
\RequirePackage{hyperref,cleveref}
}
\documentclass[a4paper,english]{lipics}
\begin{document}
\begin{theorem}\label{thm:1}
\end{theorem}
\begin{lemma}\label{lem:1}
\end{lemma}
The \Cref{lem:1} and the \Cref{thm:1}.
\end{document}