ハイパーリファレンスリンクボックスの高さと深さを一定にする

ハイパーリファレンスリンクボックスの高さと深さを一定にする

パッケージが作成するリンクの周りのボックスのhyperref高さ/深さは、文字ではなく最大の高さと深さに依存しているようです。同封の資料(下の上の例のペアを参照)しかし、文字同じ行に(下記の下の例のペアを参照してください)。

できれば

  1. リンクボックスの高さ/深さを囲まれた素材のみに依存させるか、
  2. \baselineskipリンク ボックスの高さ/深さを一定にします (高さ x⋅ 、深さ (1-x)⋅のようなものが考えられます\baselineskip)。

オプション 2 を実現するにはどうすればよいですか? (オプション 1 の回答も歓迎しますが、オプション 2 を実行する回答のみを「その」回答としてマークします。)

ハイパーリファレンスリンクボックス

(この垂直方向の寸法の違いは、見る人によって異なるようです。)

\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リンクの先頭と末尾に追加できますが、リンクが複数の行にまたがって分割されている場合、これはリンクの中央の行には適用されません。

関連情報