\hypertarget
从a 导航到 a 后的垂直滚动位置\hyperlink
(在hyperref 手册) 似乎太低了。滚动位置在 的基线\hypertarget
,因此单击 后看不到目标\hyperlink
。
如果我latex -output-format pdf document.tex
在 Mac OS X 10.8.2 上运行两次以从该文档创建 PDF——
\documentclass{minimal}
\usepackage[colorlinks=true,raiselinks=true]{hyperref}
\usepackage{lipsum}
\begin{document}
\hyperlink{target1}{target1}
\hyperlink{target2}{target2}
%\hyperlink{target3}{target3}
\par\lipsum[1-7]
\lipsum*[8]
\hypertarget{target1}{target1}
\makeatletter\Hy@raisedlink{\hypertarget{target2}{target2}}\makeatother
%\raisebox{\ht\strutbox}{\hypertarget{target3}{target3}}
\end{document}
—\hyperlink
结果文档中的所有 s 都导航至其各自\hypertarget
s 的基线。
使用的示例\Hy@raisedlink
取自超目标似乎瞄准得太低了。使用的示例\raisebox
取自同一个问题,但我将其注释掉,因为它显示了不同的(但仍然是意外的)行为。
这个问题与某些超链接(memoir+hyperref)位置太低和超目标似乎瞄准得太低了但我把它作为一个新问题来问,因为我没有使用回忆录,而且超目标似乎瞄准得太低了似乎对我有用。
这个问题似乎正是 hyperref 选项提高链接旨在解决,但该选项似乎对示例文档没有影响。
怎样才能制作\hypertarget
出高于基线的(或同等的)东西呢?
我想,可以使用\Hy@raisedlink
空的\hypertarget
(即\hypertarget
没有关联文本),但我希望有更好的方法。
答案1
TeX 中基线是众所周知的,但当前行的高度却不是。只有 TeX 在稍后的段落中断后才知道这一点。通过装箱测量高度会丢失换行。pdfTeX\vadjust pre
的稳定性不够(现在是否如此?),某些情况下会导致分段错误。在某种程度上,LuaTeX 的属性可能会有所帮助,但代价是完全不同的非平凡实现。回到问题,当前的解决方法已经提到(例如\Hy@raisedlink
使用空的
\hypertarget
)。