
Para caixas ao redor dos links que o hyperref
pacote cria, sua altura/profundidade parece depender da altura e profundidade máximas, não das letrasdo material incluído(veja o par de exemplos acima), mas de letrasna mesma linha(veja o par de exemplo inferior abaixo).
Seria bom
- tornar a altura/profundidade das caixas de ligação dependente apenas do material fechado ou
- torne constante a altura/profundidade das caixas de link (talvez algo com altura x⋅
\baselineskip
e profundidade (1-x)⋅\baselineskip
).
Como posso alcançar a opção 2? (As respostas para a opção 1 também são bem-vindas, mas marcarei como "a" resposta apenas aquela que atende a opção 2.)
(Esta diferença na(s) dimensão(ões) vertical(is) parece ser independente do visualizador.)
\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}
Responder1
O link boxing depende muito do driver, compare com dvips/ps2pdf:
pdfTeX
O pacote hyperref
usa \pdfstartlink
e \pdfendlink
para o link e permite que o pdfTeX determine as dimensões do retângulo; O pdfTeX usa apenas a altura/profundidade da caixa ao redor.
A vantagem é a quebra automática de linha de links.
Desvantagem: a altura e/ou profundidade do retângulo pode ser muito grande, por exemplo:
\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}
Uma solução alternativa também é mostrada, colocando o link no formato
\mbox
. Mas isso evita quebras de linha.
Uma profundidade adicional para os links pode ser adicionada \vphantom{y}
no exemplo da pergunta:
\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}
Algo como \vphantom{y}
poderia ser adicionado aos links, mas existem idiomas com letras acentuadas \vphantom{y\"A}
; ah, não, o autor do pdfTeX é até escrito com acento duplo e logo os retângulos de link anteriormente normais pareceriam bastante ridículos com grandes alturas e profundidades.
Adicionar também \vphantom
para garantir que uma altura/profundidade mínima não funcione em todos os lugares. \vphantom
pode ser adicionado no início e no final de um link, mas se um link for quebrado entre linhas, isso não se aplicará às linhas intermediárias do link.