Hyperref 和 oremref 冲突吗?

Hyperref 和 oremref 冲突吗?

我最初以为这个问题出在 Unicode 字符上,但缩小文件导致下面的 MWE 没有,所以看起来theoremrefhyperref彼此都不喜欢。考虑一下:

\documentclass{book}
\usepackage{theoremref}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}

\begin{document}
\begin{theorem}
\thlabel{vmezofelint}
Sample text
\end{theorem}
Sample text (see \thref{vmezofelint} ) .
\end{document}

它会产生一条错误消息,指出

File ended before scanning use of \Hy@setref@link.

我的问题是:有人知道这个 bug 的修复方法或简单解决方法吗?只需要对代码进行少量更改的方法?

更新:最新版本的theoremref.See已不再存在此问题以下是维护者的回答

答案1

我不知道有这个讨论,但是由于最近有人抱怨这两个包不兼容,我更新了 theoremref 包以添加对 hyperref 的支持。它应该很快就会通过 CTAN 提供。

答案2

不要使用theoremref

\documentclass{book}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}

\begin{document}
\begin{theorem}\label{vmezofelint}
Sample text
\end{theorem}
Sample text (see \autoref{vmezofelint}).
\end{document}

在此处输入图片描述

扩展定义

可以建立一个新的定理定义命令,这样获得\autoref正确结果的必要步骤就一劳永逸了。

\documentclass{book}

\usepackage{xparse,aliascnt,hyperref,bookmark}

\NewDocumentCommand{\xnewtheorem}{m o m}
 {%
  \IfNoValueTF{#2}
   {\newtheorem{#1}{#3}}
   {%
    \newaliascnt{#1}{#2}%
    \newtheorem{#1}[#1]{#3}%
    \aliascntresetthe{#1}%
    \expandafter\newcommand\csname #1autorefname\endcsname{#3}%
   }%
 }

\xnewtheorem{theorem}{Theorem}
\xnewtheorem{corollary}[theorem]{Corollary}

\begin{document}
\begin{theorem}\label{vmezofelint}
Sample text
\end{theorem}
Sample text (see \autoref{vmezofelint}).
\begin{corollary}\label{cor}
Sample text
\end{corollary}
Sample text (see \autoref{cor}).
\end{document}

在此处输入图片描述

答案3

如果您愿意使用cleveref包及其\cref命令而不是hyperref包的\autoref命令,则以下方法可能就是您所需要的(使用@egreg 的 MWE - 非常感谢!):

\documentclass{book}

\usepackage{ntheorem}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink,capitalize]{cleveref}
  % nameinlink and capitalize options used to emulate
  % appearance of output of \autoref command
\newtheorem{theorem}{Theorem}
\newtheorem{corollary}[theorem]{Corollary}

\begin{document}
\begin{theorem}\label{vmezofelint}
Sample text
\end{theorem}
Sample text (see \cref{vmezofelint}).
\begin{corollary}\label{cor}
Sample text
\end{corollary}
Sample text (see \cref{cor}).
\end{document}

在此处输入图片描述

相关内容