0番染色体

科学は全世界を照らす光である

hyperref利用時の2つの注意点

LaTeXユーザーにとって有名なパッケージというものはいくつかありますが,hyperref.styはそうしたメジャーなパッケージのうちの一つに数えられるでしょう.hyperref.styはTeXから生成するPDFにハイパーリンクを埋め込んだり,PDFにしおりやプロパティ情報を付加することのできる大変便利なパッケージです.

しかし,hyperref.styはLaTeXの命令をあちこち書き換えるので「行儀の悪いパッケージ」などと呼ばれ,扱い方には少し注意が必要です.ここでは,そうした数多くの注意点のうち,私が解決に若干手間取ったものについて記録しておくことにします.

注意点1:\contentsline命令

\contentslineは目次用の中間ファイル(tocファイルなど)内で使用されるコマンドで,目次の出力を行います.このコマンドは,LaTeXデフォルトでは3つの引数をとり,以下のような書式で使用されます.

\contentsline{〈項目種別〉}{〈項目内容〉}{〈ページ番号〉}

hyperref.styパッケージを読み込むと,この\contentslineの定義が(互換性のない)引数を4つとるものに書き換えられます.\addcontentsline等の定義も書き換えられるので,(カスタマイズを行わない)標準的なLaTeX文書の書き方をしていればまず問題になることはありませんが,\addtocontentsを用いて直接中間ファイルへの書き込み内容を指示する場合には注意が必要です.

\contentsline{〈項目種別〉}{〈項目内容〉}{〈ページ番号〉}{}

のように3つ目の引数の後ろに空のブレースをおくことによってエラーを回避することができます.

注意点2:リンクの「枠」

hyperref.styを読み込む際には,様々なオプションを指定することができます *1

ここでは試しに,colorlinks=true(デフォルトはfalse)としてサンプルコードをタイプセットしてみます.

\documentclass{jsarticle}

\usepackage[dvipdfmx,colorlinks=true]{hyperref}

\begin{document}

\title{\texttt{hypperref.sty}\textbf{のテスト}}
\author{ワトソン}
\maketitle

\tableofcontents

\section*{はじめに}
困ったときの\TeX\ book~\cite{TeX}\href{https://en.wikipedia.org/wiki/Donald_Knuth}{クヌース先生}は偉大なり.

\newpage

\section{テスト}

\newpage

\section{これもテスト}

\newpage

\begin{thebibliography}{9}
\bibitem{TeX}
    Knuth, D. E. (1986). \textit{The texbook} (Vol. 1993).
    Reading, MA, USA: Addison-Wesley.
\end{thebibliography}

\end{document}

すると,全部で4ページのpdfファイルが生成されますが,ここではその冒頭部のみをTeXshopのプレビュー画面で表示したもののキャプチャ画像を掲載しておきます.

colorlinks_true_texshop

ご覧のとおり,とてもカラフルな出力結果が得られました.リンクの場所・種別が明示的でわかりやすく,特にインターネット上で公開する場合などにはこれもこれでよいでしょう.

しかし,(モノクロでの)印刷を前提とする場合など,リンク箇所に色付けしたくない場合もあります.そのような場合はどのようにすればよいのでしょうか.

とりあえず,colorlinks=trueのオプションを削除(colorlinks=falseと同義)して再びタイプセットしてみます.

\documentclass{jsarticle}

\usepackage[dvipdfmx]{hyperref}

\begin{document}

\title{\texttt{hypperref.sty}\textbf{のテスト}}
\author{ワトソン}
\maketitle

\tableofcontents

\section*{はじめに}
困ったときの\TeX\ book~\cite{TeX}\href{https://en.wikipedia.org/wiki/Donald_Knuth}{クヌース先生}は偉大なり.

\newpage

\section{テスト}

\newpage

\section{これもテスト}

\newpage

\begin{thebibliography}{9}
\bibitem{TeX}
    Knuth, D. E. (1986). \textit{The texbook} (Vol. 1993).
    Reading, MA, USA: Addison-Wesley.
\end{thebibliography}

\end{document}

さきほどと同様,TeXshopのプレビュー画面を掲載します.

colorlinks_false_texshop

リンクから色が消えました.これで一件落着……と思いきや,ここに思わぬ落とし穴があります.

同じpdfファイルを,adobe社純正のAdobe Acrobat Reader DCで表示してみましょう *2

colorlinks_false_acrobat

同一のpdfファイルであるにもかかわらず,こちらではリンクにカラーの枠付で表示されてしまいました.リンクの種別により異なる色の枠が付いていることから,この枠は(ビューアが勝手に表示したものではなく)PDFが保持している情報であることがわかります.

実際,hyperref.styの仕様書を見ると,colorlinks=falseとするとリンクに枠が付く仕様になっているようです *3

リンクに色や枠が確実に付かないようにするためには,hidelinksオプションを利用しましょう.

\documentclass{jsarticle}

\usepackage[dvipdfmx,hidelinks]{hyperref}

\begin{document}

\title{\texttt{hypperref.sty}\textbf{のテスト}}
\author{ワトソン}
\maketitle

\tableofcontents

\section*{はじめに}
困ったときの\TeX\ book~\cite{TeX}\href{https://en.wikipedia.org/wiki/Donald_Knuth}{クヌース先生}は偉大なり.

\newpage

\section{テスト}

\newpage

\section{これもテスト}

\newpage

\begin{thebibliography}{9}
\bibitem{TeX}
    Knuth, D. E. (1986). \textit{The texbook} (Vol. 1993).
    Reading, MA, USA: Addison-Wesley.
\end{thebibliography}

\end{document}

リンクを見た目から見つけることができないという欠点はありますが,これによりhyperref.styにより文書の見た目が変更されてしまうことが防げるようになりました.

nolinks_acrobat

以上,独断と偏見で選んだhyperref.sty利用時の2つの注意点でした.

*1:\hypersetupを利用するという手もあります.詳細は TeX wiki を参照してください.

*2:ここでは最新のAdobe Acrobat Reader DCを使用しましたが,従来のAdobe Readerでも同様に表示されるはずです.また,Adobe社純正品以外でも同様の結果が得られるビューア(Raddle PDF Expertなど)もあります.

*3:pdfは仕様がかなり複雑であるため,その仕様に完全には対応できていないビューアが少なくありません.TeXshop以外にも,リンク枠が表示されないPDFビューア(skim.appなど)は相当数あるのではないかと予想されます.同様の理由から,人に渡す可能性のあるpdfファイルは一度Adobe純正のビューアで見え方を確認するクセを付けておくことをお薦めします.