Altura e profundidade constantes das caixas de links hiperref

Altura e profundidade constantes das caixas de links hiperref

Para caixas ao redor dos links que o hyperrefpacote 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

  1. tornar a altura/profundidade das caixas de ligação dependente apenas do material fechado ou
  2. torne constante a altura/profundidade das caixas de link (talvez algo com altura x⋅ \baselineskipe 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.)

caixas de links hiperref

(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:

dvips/ps2pdf

pdfTeX

O pacote hyperrefusa \pdfstartlinke \pdfendlinkpara 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}
    

    pdfTeX

    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}

Resultado

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 \vphantompara garantir que uma altura/profundidade mínima não funcione em todos os lugares. \vphantompode 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.

informação relacionada