对于共享相同计数器的定理环境,使用 Cleveref 和 LIPIC 文档类会失败

对于共享相同计数器的定理环境,使用 Cleveref 和 LIPIC 文档类会失败

我希望定理和引理在文本中被称为“定理 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,但使用了不同的关键字(lemmabecome lemtheoremisthm等等)。我确保新环境与 中定义的默认环境一致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}

相关内容