Altura y profundidad constantes de los cuadros de enlace de hiperreferencia.

Altura y profundidad constantes de los cuadros de enlace de hiperreferencia.

Para cuadros alrededor de enlaces que elhyperref crea el paquete, su altura/profundidad parece depender de la altura y profundidad máximas, no de las letras.del material encerrado(ver par de ejemplo superior a continuación) pero de letrasen la misma linea(vea el par de ejemplos inferior a continuación).

Sería bueno

  1. hacer que la altura/profundidad de las cajas de enlaces dependa únicamente del material incluido o
  2. haga constante la altura/profundidad de los cuadros de enlace (tal vez algo con altura x⋅ \baselineskipy profundidad (1-x)⋅ \baselineskip).

¿Cómo puedo lograr la opción 2? (Las respuestas para la opción 1 también son bienvenidas, pero marcaré como "la" respuesta solo la que responda a la opción 2).

cuadros de enlace de hiperreferencia

(Esta diferencia en las dimensiones verticales parece ser independiente del espectador).

\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}

Respuesta1

El boxeo de enlaces depende mucho del controlador, compárelo con dvips/ps2pdf:

dvips/ps2pdf

pdfTeX

El paquete hyperrefutiliza \pdfstartlinky \pdfendlinkpara el enlace y permite que pdfTeX determine las dimensiones del rectángulo; pdfTeX solo usa la altura/profundidad del cuadro circundante.

  • La ventaja es el salto automático de línea de enlaces.

  • Desventaja: la altura y/o la profundidad del rectángulo pueden ser demasiado grandes, por ejemplo:

    \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

    También se muestra una solución alternativa, encuadrando el enlace en formato \mbox. Pero esto evita saltos de línea.

Se puede agregar una profundidad adicional para los enlaces \vphantom{y}en el ejemplo de la pregunta:

\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

Se podría agregar algo así \vphantom{y}a los enlaces, pero hay idiomas con letra acentuada, \vphantom{y\"A}; Oh, no, el autor de pdfTeX incluso escribe con doble acento y pronto los rectángulos de enlaces que antes eran normales, con grandes alturas y profundidades, se verían bastante ridículos.

Además, agregar \vphantompara garantizar una altura/profundidad mínima no funciona en todas partes. \vphantomSe puede agregar al principio y al final de un enlace, pero si un enlace está dividido en líneas, esto no se aplicará a las líneas intermedias del enlace.

información relacionada