超链接/超目标跳转到所需位置以下的行

超链接/超目标跳转到所需位置以下的行

我有一个用于设置双向超链接/超目标的自定义命令:

\documentclass[a4paper]{report}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[hidelinks]{hyperref}
\usepackage{acronym}
\usepackage{longtable}
\usepackage{lipsum}

% Custom Commands
\newcommand{\pac}[2]{\hyperlink{{#1}1}{\hypertarget{{#1}0}{#2}}}
\newcommand{\jac}[1]{\hypertarget{{#1}1}{\hyperlink{{#1}0}{\ac{#1}}}}

\begin{document}

\chapter{List of Acronyms}

% This table gives me fine control of acronym formatting
\begin{longtable}{ p{.20\textwidth}  p{.80\textwidth} } 
    \pac{frog}{FROG} & Finite Random Oscillator Response
\end{longtable}

% I made up this acronym
\acrodef{frog}[FROG]{Finite Random Oscillator Response}

% -----------------------------------------------------

\chapter{First chapter}
Get to know more about what is a \jac{frog}. 
\lipsum[1-10]

\end{document}

但每当链接出现在最终 PDF 中时,它总是跳转到目标下方的行,需要我向上滚动一行才能查看超链接。我花了一段时间试图解决这个问题,但似乎找不到任何可行的解决方案,我见过这个问题- 这正是我遇到的问题,但解决方案\phantombreak没有什么不同,插入一个\break之前部分解决了该问题,因为它会跳转到正确的位置,但现在每当我想使用超链接时都会出现一个巨大的换行符。请提供建议,因为这是一个相当烦人的问题。

编辑:添加了一个重现确切问题的示例(已在背面和下载的 PDF 中验证)。

答案1

您可以升起锚:

\makeatletter
\newcommand{\pac}[2]{\hyperlink{{#1}1}{\Hy@raisedlink{\hypertarget{{#1}0}{}}{#2}}}
\newcommand{\jac}[1]{\Hy@raisedlink{\hypertarget{{#1}1}{}}{\hyperlink{{#1}0}{\ac{#1}}}}
\makeatother

相关内容