如何避免定理中的超链接错误(?)

如何避免定理中的超链接错误(?)

有时我们在 AMS 定理中使用列表。出于某种原因,当列表\label在定理最开始的 之后到达时,超链接会损坏。只需放置一个字符或 ,超\leavevmode链接就可以了,但当然,逐项列表的第一个条目不再是定理的第一行,而这正是我需要的。

比较:

\documentclass{book}
\usepackage{hyperref,amsmath,amsthm}
\newtheorem{coro}{Corollary}
\author{Yannis}
\title{Titre}
\begin{document}
\maketitle

\begin{coro}\label{blabla}
\begin{itemize}\item This is a corollary.\item With a list\end{itemize}
\end{coro}

As we saw in Corollary~\ref{blabla}\ldots

\end{document}

结果(我在 Mac 和 overleaf 上都试过了,都用的是 TeXlive 2020)超链接指向文档的标题。当我写

\documentclass{book}
\usepackage{hyperref,amsmath,amsthm}
\newtheorem{coro}{Corollary}
\author{Yannis}
\title{Titre}
\begin{document}
\maketitle

\begin{coro}\label{blabla}\leavevmode
\begin{itemize}\item This is a corollary.\item With a list\end{itemize}
\end{coro}

As we saw in Corollary~\ref{blabla}\ldots

\end{document}

超链接正常,但列表从低一行开始。

我怎样才能使两个条目都以推论的同一行开始,并具有正确的超链接?

答案1

这是一个已知问题,但 hyperref 目前无法解决(也不想解决),因为问题出在 amsthm 中。另请参阅https://github.com/latex3/hyperref/issues/48

正如评论中提到的,cleveref 修补程序\@thm可以解决问题。因此,加载包是一种选择。另一种方法是手动设置缺失的目标:

\documentclass{book}
\usepackage{amsmath,amsthm}
\usepackage{hyperref}
\newtheorem{coro}{Corollary}
\author{Yannis}
\title{Titre}
\begin{document}
\maketitle

xxxxx

\begin{coro}\label{blabla}\hypertarget{\csname @currentHref\endcsname}{}%\leavevmode

\begin{itemize}\item This is a corollary.\item With a list\end{itemize}
\end{coro}

\newpage
As we saw in Corollary~\ref{blabla}\ldots

\end{document}

在日志中可以看到缺少目标:

 pdfTeX warning (dest): name{coro.1} has been referenced but does not exist, replaced by a fixed one

相关内容