
Для рамок вокруг ссылок, которые 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
Link box очень зависим от драйвера, сравните с 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
может быть добавлено в начале и в конце ссылки, но если ссылка разорвана на несколько строк, то это не будет применяться к средним строкам ссылки.