对于链接周围的框,hyperref
,它们的高度/深度似乎取决于最大高度和深度,而不是字母随附材料的(见下面最上面的示例对)但字母在同一条线上(见下面底部的示例对)。
很好
- 使链接盒的高度/深度仅取决于封闭的材料或
- 使链接框的高度/深度保持不变(可能是高度 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 相比:
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}
还展示了一种解决方法,将链接放在 中
\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
可以在链接的开始和结束处添加,但如果链接跨行断开,则这将不适用于链接的中间行。