
Bei den Boxen um Links, die das hyperref
Paket erstellt, scheint die Höhe/Tiefe von der maximalen Höhe und Tiefe abhängig zu sein, nicht von den Buchstabendes beiliegenden Materials(siehe oberes Beispielpaar unten), sondern aus Buchstabenauf der gleichen Linie(siehe unteres Beispielpaar unten).
Es wäre schön,
- Höhe/Tiefe von Linkboxen nur vom beiliegenden Material abhängig machen oder
- Machen Sie die Höhe/Tiefe der Linkboxen konstant (vielleicht etwas mit Höhe x⋅
\baselineskip
und Tiefe (1-x)⋅\baselineskip
).
Wie kann ich Option 2 erreichen? (Antworten für Option 1 sind ebenfalls willkommen, aber ich werde nur die Antwort als „die“ Antwort markieren, die Option 2 umsetzt.)
(Dieser Unterschied in der vertikalen Dimension(en) scheint betrachterunabhängig zu sein.)
\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}
Antwort1
Linkboxing ist stark treiberabhängig, vergleichen Sie mit dvips/ps2pdf:
pdfTeX
Das Paket hyperref
verwendet \pdfstartlink
und \pdfendlink
für den Link und lässt pdfTeX die Abmessungen des Rechtecks bestimmen; pdfTeX verwendet nur die Höhe/Tiefe der umgebenden Box.
Vorteil ist die automatische Zeilenumbrechung von Links.
Nachteil: Höhe und/oder Tiefe des Rechtecks können viel zu groß sein, zB:
\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}
Es wird auch ein Workaround gezeigt, bei dem der Link in einer Box dargestellt wird
\mbox
. Dies verhindert jedoch Zeilenumbrüche.
Eine zusätzliche Tiefe für die Links kann wie \vphantom{y}
im Beispiel der Frage hinzugefügt werden:
\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}
So etwas \vphantom{y}
könnte man noch zu den Links hinzufügen, aber es gibt Sprachen mit Akzentbuchstaben, \vphantom{y\"A}
; oh nein, der Autor von pdfTeX hat sogar mit doppeltem Akzent geschrieben und schon bald würden vorher normale Link-Rechtecke mit großen Höhen und Tiefen ziemlich lächerlich aussehen.
Auch das Hinzufügen \vphantom
zur Gewährleistung einer Mindesthöhe/-tiefe funktioniert nicht überall. \vphantom
kann am Anfang und Ende eines Links hinzugefügt werden, aber wenn ein Link über mehrere Zeilen verläuft, dann gilt dies nicht für die mittleren Zeilen des Links.