pdfx (hyperref)、ntheorem 和 cleveref 的冲突

pdfx (hyperref)、ntheorem 和 cleveref 的冲突

编译 MWE

\documentclass{book} 

\usepackage[x-1a1]{pdfx}% also loads hyperref
\usepackage{amsmath} 
\usepackage[amsmath,amsthm,thref,thmmarks]{ntheorem}    
\usepackage{cleveref}

\newtheorem{theorem}{Theorem}

\begin{document}

\chapter{foo}\label{ch:foo}

\begin{theorem}[bar's theorem]\label{thm:bar}
bar.
\begin{align}
    1   &=1     \label{eq}
\end{align}
\end{theorem}

\Cref{ch:foo,thm:bar,eq} are important.

\end{document}

两次使用pdfTeXLuaHBTeX打开TeX Live 2023会导致错误

./packageClashMWE.tex:21: @fifthoffive 的参数有一个额外的}。

<插入文本>

\par

l.21 \Cref{sec: fooSection,theo,eq} 很重要。

hyperref早期版本中发布的版本不存在这个问题TeX Live 2022

如果

  1. pdfx(依赖于hyperref)和hyperref,或
  2. 所有实例cleveref,或
  3. 所有实例nteorem

被删除。当然,这是一个不必要的限制。

答案1

选项不是必需的threfntheorem因为您可以使用 提供的工具cleveref代替\thref。以下简单更改运行时不会出现错误。

\documentclass{article} 

\usepackage[x-1a1]{pdfx}% also loads hyperref
\usepackage{amsmath} 
\usepackage[amsmath,amsthm,thmmarks]{ntheorem}% observe the small change    
\usepackage{cleveref}

\newtheorem{theorem}{Theorem}

\begin{document}

\section{section foo}\label{sec: fooSection}

\begin{theorem}[foo thoerem]\label{theo}
bar.
\begin{align}
    1   &=1     \label{eq}
\end{align}
\end{theorem}

\Cref{sec: fooSection,theo,eq} are important.

\end{document}

相关内容