hyperref-cleveref-ntheorem 交互导致的错误:未定义计数器“[”

hyperref-cleveref-ntheorem 交互导致的错误:未定义计数器“[”

我在运行TeX Live 2023手动安装(不是通过发行版的 repo),并且在撰写本文时(2023-04-21)是最新的。

以下简短文档在最近升级后开始出现错误:

\documentclass[11pt]{article}

\usepackage{mathtools}

\usepackage{hyperref}

\usepackage{ntheorem}
\usepackage{cleveref}

\theoremstyle{plain}
\newtheorem{lemma}{Lemma}[section]

\title{}

\begin{document}


\maketitle

\begin{lemma}
  
\end{lemma}

\end{document}

具体来说,我收到的错误是

ERROR: LaTeX Error: No counter '[' defined.

在下列任一情况下,该症状都会消失:

  1. 我注释掉了\usepackage{hyperref}

  2. 我注释掉了\usepackage{cleveref}

  3. 我动了\usepackage{cleveref} 多于 \usepackage{ntheorem}

我想使用所有三个包,这样 1. 和 2. 就不是真正的修复了。至于 3.,它也有缺点:如果它在 之前加载ntheoremcleveref则在交叉引用时似乎会丢失环境类型的跟踪:即使它是其他东西(定理、命题、定义等),也\Cref{blah}总是会产生。Lemma <blah><blah>

在我访问的其他系统上没有发生这种情况(仍然是 Linux,仍然如此),这些系统很少TeX Live 2023更新各自的发行版。我清楚地记得最近收到的一次升级可能引发了这个问题。TeX Livehyperref

编辑

我按照下面一条评论中的建议回滚了hyperref。由于我不知道如何立即执行此操作,因此我在此记录下来(根据其他答案):

首先列出可以恢复到的版本:

$ tlmgr restore hyperref
Available backups for hyperref: 65758 (2023-04-21 17:23)

然后,真正实现恢复:

$ tlmgr restore hyperref 65758
Do you really want to restore hyperref to revision 65758 (y/N): y

目前这样就很好了:该文件在这个早期版本的软件包上编译成功。

相关内容