超链接框的恒定高度和深度

超链接框的恒定高度和深度

对于链接周围的框,hyperref,它们的高度/深度似乎取决于最大高度和深度,而不是字母随附材料的(见下面最上面的示例对)但字母在同一条线上(见下面底部的示例对)。

很好

  1. 使链接盒的高度/深度仅取决于封闭的材料或
  2. 使链接框的高度/深度保持不变(可能是高度 x⋅\baselineskip和深度 (1-x)⋅ \baselineskip)。

我怎样才能实现选项 2?(也欢迎回答选项 1,但我只会将符合选项 2 的答案标记为“唯一”答案。)

超链接框

(垂直尺寸的差异似乎与观察者无关。)

\documentclass{article}
\usepackage{hyperref}

\begin{document}

\tableofcontents

\section{dy}
dy.\footnote{Footnote.} \smash{\rule[-0.3\baselineskip]{1em}{\baselineskip}}

\section{abc}
ac.\footnote{Footnote.} \smash{\rule[-0.3\baselineskip]{1em}{\baselineskip}}

\end{document}

答案1

链接装箱非常依赖于驱动程序,与 dvips/ps2pdf 相比:

dvips/ps2pdf

pdfTeX

hyperref使用\pdfstartlink\pdfendlink作为链接并让 pdfTeX 确定矩形尺寸;pdfTeX 仅使用周围框的高度/深度。

  • 优点是链接自动断行。

  • 缺点:矩形的高度和/或深度可能太大,例如:

    \documentclass{article}
    \usepackage{hyperref}
    \begin{document}
    \section{Foo}\label{foo}
    
    \noindent
    \vrule width 5pt height 3\baselineskip depth 2\baselineskip
    \hyperref[foo]{abc}
    \mbox{\hyperref[foo]{abc}}
    
    \end{document}
    

    pdfTeX

    还展示了一种解决方法,将链接放在 中\mbox。但这会阻止换行。

\vphantom{y}可以通过问题示例中的链接添加额外的深度:

\documentclass{article}
\usepackage{hyperref}

\begin{document}

\tableofcontents

\section{dy}
dy.\footnote{Footnote.}
\smash{\rule[-0.3\baselineskip]{1em}{\baselineskip}}

\section{abc\protect\vphantom{y}}  
ac.\footnote{Footnote.}\vphantom{y}
\smash{\rule[-0.3\baselineskip]{1em}{\baselineskip}}

\end{document}

结果

\vphantom{y}可以在链接中添加类似的内容,但有些语言带有重音字母\vphantom{y\"A};哦不,pdfTeX 的作者甚至用双重音符号书写,很快以前正常的链接矩形就会因高度和深度过大而显得相当可笑。

另外,添加\vphantom以确保最小高度/深度并不在任何地方都有效。\vphantom可以在链接的开始和结束处添加,但如果链接跨行断开,则这将不适用于链接的中间行。

相关内容