hyperref 错误地放置了 \label 的目标

hyperref 错误地放置了 \label 的目标

我有一行像' \begin{thm}\label{tPrimes}',其中thm使用来定义\newtheorem

它生成一行以粗体“定理 1.2”开头的行。似乎定义的目标\label总是在“定理”一词上方一行。这不是我所期望的,但在很多情况下是可以接受的。

但是,如果 LaTeX 将“定理 1.2”放在第 N 页的顶部,则单击\ref{tPrimes}第 N+1 页上由 生成的文本会转到第 N-1 页的底部,这是一个问题:读者看到的不是定理。我尝试\label与结合\phantomsection。然后目标就在正确的行中,但位于其中的某个地方,确切地说是\label was used

有没有一种方法可以将目标放在“定理”一词的左边,无论它是否打开页面?

我正在使用 MikTeX 2.9、LaTeX2e <2015/10/01> hyperref[dvipdfm]。谢谢,Vitek Svejdar

\documentclass[10pt,a5paper,twoside]{article}%
\usepackage{blindtext}%
\title{Experiments with labels and hyperref}\author{V.\v S.}
\newtheorem{thm}{Theorem}[section]
\usepackage[dvipdfm,colorlinks=true]{hyperref}
\hypersetup{%
%hypertexnames=false,
pdfpagelayout=TwoPageRight,%
pdfpagemode=UseNone,%
pdftoolbar=false,%
pdfmenubar=false}%
\begin{document}
\maketitle
\section{First section}
\blindtext
% Theorem 1.1 in the very bottom of page 1:
\begin{thm}\label{tPrimes}
If a prime\/ $p$ is a divisor of a product\/ $a\cdot b$, then it is
a divisor of one of the numbers\/ $a$~and\/~$b$.
\end{thm}
% Theorem 1.2 opens page 2. However, \label places its anchor on page 1:
\begin{thm}\label{tEuclid}
Euclid's group\/ $\Phi(p)$ of every prime\/~$p$ is cyclic.
\end{thm}
% Blind text whose purpose is to get to page 3
\par\blindtext\par\blindtext\par\blindtext
\par
See Theorem \ref{tPrimes} on page~\pageref{tPrimes}.
% \ref correctly generates '1.2', \pageref correctly generates '2',
% but a click on '1.2' takes me to the bottom of page 1:
Theorem~\ref{tEuclid} on page~\pageref{tEuclid} plays a role in the following proof.
\end{document}

答案1

发生这种情况的原因是,的原始设计\label早于互联网,并且不是为提供链接锚点的位置而设计的。hyperref它会尽可能多地修补问题,所以通常可以正常工作,但定理布局很棘手,并且在包中有许多不同的定义形式,因此很难全部捕捉到它们。

如果发生这种情况,您可以随时通过在定理之前(在自动分页发生的同一位置)放置来强制获得更好的结果\clearpage,这将确保分页发生在链接锚点生成之前,因此锚点最终会出现在下一页的顶部。

答案2

因此,很明显,与原始 LaTeX 的 不同\newtheoremamsthm定义具有正确放置锚点的环境。如果原始的视觉形式\newtheorem(定理编号后没有句点,并且可选参数以粗体显示)是可取的,则amsthm可以使用以下设置:

\newtheoremstyle{ltxtheorem}{9.5pt plus 3pt minus 4pt}{9.5pt plus 3pt minus 4pt}%
  {\itshape}{}% Body font, no indentation
  {\bfseries}{}% Head font, no punctuation. Space after the head and the head shape:
  {.5em}{\thmname{#1}\thmnumber{\hspace{.33333em}#2}\thmnote{\hspace{.33333em}(#3)}}%

长度是通过实验发现的,但或多或​​少是有效的。

相关内容