我有一个用于设置双向超链接/超目标的自定义命令:
\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