背景と課題
Beamer で文書内の特定のセクションや特定のスライドにリンクするには、リンク先にラベルを貼り付けておき、そのラベルを参照するとリンクできる。
\section{パスタの種類}\label{a-section-pasta} % セクションにラベル
\begin{frame}[label=a-frame-spa]{スパゲッティ} % スライドにラベル
細長いパスタ。
とてもおいしい。
\end{frame}
\hyperlink{a-section-pasta}{パスタの種類のセクションへ}
\hyperlink{a-frame-spa}{スパゲッティのスライドへ}
PDF ビューアで PDF を 1 ページずつ表示する分にはこれで違和感はない。が、PDF を連続縦スクロールで表示する場合、この方法では画面上端がスライド上端になる位置に着地するのではなく、画面上端がスライドのコンテンツの上端になる位置に着地する (私の手元では)。そのため、着地したスライドのタイトルが隠れてみえない。
着地したスライドのタイトルが隠れないようにしたい。
対処法
セクションやスライドにラベルを貼り付けるのではなく、スライドタイトル文字列の直前にアンカー (\hypertarget) を設置してこれにリンクすれば、スライド上端に着地でき、「着地したスライドのタイトルが隠れる」課題は解決する。
\section{パスタの種類}
\begin{frame}{\hypertarget{a-title-spa}{}スパゲッティ} % スライドタイトル文字列直前にアンカー
細長いパスタ。
とてもおいしい。
\end{frame}
\hyperlink{a-title-spa}{パスタの種類のセクションへ}
\hyperlink{a-title-spa}{スパゲッティのスライドへ}
別の対処法 (非推奨)
Beamer にはデフォルトでスライドやセクションへのリンクが張り巡らされており、これはスライド上端に着地できている。Beamer でビルドされた PDF を解析するとセクションやスライドへのリンクは以下のようになっているので、これなら着地したスライドのタイトルは隠れず、それもアンカーを設置しなくてもリンクできる。
\hyperlink{Outline0.3}{パスタの種類のセクションへ} % リンク先が 3 セクション目のとき
\hyperlink{Navigation5}{スパゲッティのスライドへ} % リンク先が 5 スライド目のとき
ただし、まだそのスライドを編集するならセクション番号やスライド番号はずれていく可能性が高い。ので、この対処法を採用するのは「どうあっても 5 スライド目に着地したい」とか、「アンカーを設置する余裕がないほど逼迫している」とかのときに限られる。