하이퍼참조 링크 상자의 일정한 높이와 깊이

하이퍼참조 링크 상자의 일정한 높이와 깊이

패키지가 생성하는 링크 주변 상자의 경우 hyperref높이/깊이는 문자가 아닌 최대 높이 및 깊이에 따라 달라지는 것 같습니다.동봉된 자료 중(아래의 상위 예제 쌍 참조) 그러나 문자같은 줄에(아래 하단 예제 쌍 참조)

하면 좋을 것 같아요

  1. 링크 박스의 높이/깊이가 포함된 재료에만 의존하도록 만들거나
  2. 링크 상자의 높이/깊이를 일정하게 만듭니다(높이 x⋅ \baselineskip및 깊이 (1-x)⋅ \baselineskip).

옵션 2를 어떻게 달성할 수 있나요? (옵션 1에 대한 답변도 환영하지만 옵션 2에 해당하는 답변만 "the" 답변으로 표시하겠습니다.)

하이퍼참조 링크 상자

(이 수직 치수의 차이는 시청자와 무관한 것으로 보입니다.)

\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

링크 박싱은 드라이버에 크게 의존합니다. dvips/ps2pdf와 비교해 보세요.

dvips/ps2pdf

pdfTeX

패키지는 링크를 위해 및를 hyperref사용하며 pdfTeX가 직사각형 크기를 결정할 수 있도록 합니다. pdfTeX는 주변 상자의 높이/깊이를 사용합니다.\pdfstartlink\pdfendlink

  • 장점은 링크의 자동 줄바꿈입니다.

  • 단점: 직사각형의 높이 및/또는 깊이가 너무 클 수 있습니다. 예:

    \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

    해결 방법도 표시되어 있으며 \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링크의 시작과 끝에 추가할 수 있지만 링크가 여러 줄에 걸쳐 끊어지면 링크의 중간 줄에는 적용되지 않습니다.

관련 정보