ハイパーリンク付きLaTeX文書

参考LaTeXファイル [PDFファイル]図書資料を調べる [ソースファイル]refer_original.zip(ZIP圧縮ファイル)

LaTeXでタイプセットしたPDFファイルにHTMLと同様なハイパーリンク機能を加えるためには、パッケージ hyperref を利用する。 その際、日本語「しおり」問題(しおり・タイトル等の日本語の文字化け防止)を解消するパッケージ PXjahyper(必要なファイルはpxjahyper.styだけ)を是非併せて使いたい。

これらのパッケージを使うには、次のようにプリアンブル内(\documentclass と \begin{document} で挟まれた部分)で宣言する(パッケージpxjahyperはTeXシステムに含まれていないかもしれないので、別途ダウンロードして適切に配置する必要がある。後述)。

\documentclass{jsarticle}
.......
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
.......
\begin{document}

パッケージ hyperef の利用をこのように宣言するだけで、生成されるPDFファイルにおいて、\tableofcontents によって書き出された目次をクリックすると該当する見出しへジャンプしたり、 さらには、\label{ラベル名} を番号で参照する \ref{ラベル名} や thebibliography環境において \bibitem{ラベル名} を文献番号で参照する \cite{ラベル名} においても番号をクリックすると該当箇所にジャンプするので、(しかも長大な)PDFファイルでは絶大な威力を発揮する。

パッケージpxjahyperのダウンロードと配置

hyperref パッケージは最近のTeXシステムに付属している(はずである)。 まず、付属しているかどうかは、 TeXシステム内のパッケージを探すで説明してあるように、ターミナルから kpsewhich を次のように使ってhyperref パッケージの存在を確かめてみる(プロンプト記号 % は入力しない)。 以下は、システムに hyperref.sty が存在している場所を調べた例である。

[Windowsのw32texの場合]
% kpsewhich hyperref.sty
c:/w32tex/share/texmf-dist/tex/latex/hyperref/hyperref.sty

[MacTeXの場合]
% kpsewhich hyperref.sty
/usr/local/texlive/2013/texmf-dist/tex/latex/hyperref/hyperref.sty
  1. hyperref.sty がシステムになければ、パッケージhyperrefをダウンロード(実際に必要なのはファイル hyperref.sty である)を次のパッケージPXjahyperと同じく、自分の$TEXMFHOME/tex/ 内のどこかに置く。
  2. 次に、PXjahyperから(画面右下にある[Download ZIP]ボタンを押して)をダウンロードし、これを展開したフォルダ PXjahyper-master ごと、$TEXMFHOME/tex/ 内のどこかに置く。 利用しているパソコンで、$TEXMFHOME がどの場所として設定されるかはTEXMFHOMEの利用を参照。

hyperrefとpxjahyperのパッケージ利用宣言

hyperref(とPXjahyper)を使うと相当凝ったハイパーリンクが可能となる。 パッケージ hyperref のオプションとして、ドライバ dvipdfmx を指定していることに注意しましょう(DVIファイルからPDFファイルを生成するドライバ)。 ここでは、画像を貼り込むためのパッケージ graphicx や文字色を付けるためのパッケージcolor も併せて読み込んでおく(使わないパッケージを読み込んでも何もも起こらないのでいつも以下のようにプリアンブルに書いておいてもよい)。

\documentclass{何かの文書スタイル}
%プリアンブル部
\usepackage[dvipdfmx]{graphicx,color>}
....
%以下はパッケージリストの末尾に置くのが無難
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper} %%hyperref読み込みの直後に
% タイトル情報
.....
\begin{document}

また、ハイパーリンクの文字色などを変更するには、次のようにしてhyperrefのオプションリストを使うことができる。

\documentclass{何かの文書スタイル}}
...プリアンブル
\usepackage[dvipdfmx]{graphicx,color}
...
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
\hypersetup{% hyperrefオプションリスト
setpagesize=false,
 bookmarksnumbered=true,%
 bookmarksopen=true,%
 colorlinks=true,%
 linkcolor=blue,
 citecolor=red,
}
.....
\begin{document}

パッケージ hyperref のオプションを以下にその一部を掲げておく。

hyperref のオプション
オプションデフォルト意味・機能
bookmarkstrueブックマークを作成する
bookmarksnumberedtocdepthしおりのレベル
bookmarksopenfalseブックマークを開く
colorlinksfalseカラーリンクを使用する場合には true を指定
anchorcolorblackanchor テキスト用のカラー
linkcolorred内部参照リンク用のカラー
citecolorgreen文献参照リンク用のカラー
filecolormagentaローカルファイル参照リンク用カラー
urlcolorcyan外部参照 URL リンク用カラー

hyperrefの使い方

パッケージ hyperref を宣言すれば、LaTeX本文中で次のような表記によってHTMLのように、タイプセットして得られるPDFファイル内におけるリンクだけでなく、外部リソースへのハイパーリンクが簡単に可能になる。

\url{url}文字列urlにURLを関連付ける(tildeやunderbar文字も処理する)
\href{url}{text}textをリンク文字列としてパイパーリンクURLを関連付ける
\hypertarget{name}{text}textにPDFファイル内のリンクポイント名nameを付与する
\hyperlink{name}{text}textにPDFファイル内のラベル名nameを関連付ける

こうして生成されたPDFファイルにおいて、linkが設定された「クリック可能文字列」にマウスオーバーするとマウスカーソルの形状が変化してクリックできるようになる。 これをクリックすると、関連付けられた「箇所」にジャンプする。

たとえば、次のようにつかう。

.....
.....
開けてはならないと渡された\hypertarget{tamatebako}{玉手箱}
を開くと太郎は老人に変わり果てる。
....
....
浦島伝説を子細に検討すると\hyperlink{tamatebako}{玉手箱}こそが
タイムマシンであるという考えが浮かび上がってくる。
....

PDFファイルの外部にあるリソースにアンカー文字列をクリック(タッチ)して、目的のURLにジャンプするには次のように書く。

.....
\href{http://www.gutenberg.org}{Project Gutenberg}は、著作権問題が発生しない古今東西の古典を中心として、それらをebookとして提供している。
......
また、参考文献環境 thebibliography 内などで、リンク先のURLが明記されており、それをクリック(タッチ)して(Webブラウザを経由して)そのインターネットリソースにハイパーリンクするには次のように記述する。
\bibitem{einstein} Zur Elektrodynamik bewegter K\"{o}rper, A. Einsteain,Ann. Phys., 322: 891–921(1905), 
\url{http://onlinelibrary.wiley.com/doi/10.1002/andp.19053221004/abstract}

hyperrefの問題克服

PDFファイル内外のリソースへのハイパーリンクの際に次の2点が問題になる場合がある。 これらは対策可能である。

リンク文字列に特殊記号があって、タイプセットに失敗する

パッケージhyperefを使って \href{url}{text} とする際に、textにLaTeXの特殊文字が含まれる場合には、それをエスケープして記載しなければならない(リンク文字列 text = url と目的のURLである場合には、単に \url{URL} と記載すればよい)。

たとえば、textに「cafe & bar」や「50%以上」のようにリンク文字列アンパサント (&) やアンダーバー (_)があると、タイプセットに失敗する。 またパーセント(%)は行末までコメントとして扱われて表示されなくなってしまう。 これらの文字ははLaTeXの特殊記号(特別な役割を持たされている文字)である。 そのまま普通の文字として表示する場合には、バックスラッシュ(\)をつけてエスケープして、 \&+ 、\_ 、\% のように書く。 また、チルダ (~) を表示する場合には \textasciitilde{} と記す(最後の括弧{}は必要だと思ってもらいたい)。

LaTeXの特殊文字を表示する
読み出力入力
hash# \#
dollar$ \$
percent% \%
ampersand& \&
tilde~ \textasciitilde
underscore_ \_
caret^ \textasciicircum
backslash\ \textbackslash (数式モード内では \backslash)
left brace{ \{
right brace} \}

URLに日本語・中国語やフランス語・ドイツ語などの文字列が含まれる

URLに日本語のような文字列が含まれる場合には、ブラウザによっては日本語部分が認識できず、正しく参照できないことがある。 URLに日本語・中国語やフランス語・ドイツ語など英数字以外の文字列が含まれている場合は配慮が必要である。

Wikiの「温室効果ガス」のURLが、『https://ja.wikipedia.org/wiki/温室効果ガス』と表されるか、『https://ja.wikipedia.org/wiki/%e6%b8%a9%e5%ae%a4%e5%8a%b9%e6%9e%9c%e3%82%ac%e3%82%b9』(このままでは可読不可能で、この文字列を誰も逐一入力しないだろう)かは、OSや利用しているブラウザに依存している。

演習1: 「https://ja.wikipedia.org/wiki/温室効果ガス」にアクセスして、Webブラウザに表示されるURLを確認しなさい。

このようなパーセント記号(%)を使ってURLを表示するやり方は、URLに使用できない文字を使った場合に行われる符号化方法でインターネット規約 RFC3986(Section 2.1)で定義されている。 この符号化をURLエンコード、あまたはパーセントエンコードという。

Webブラウザに表示されたこのURLが「https://ja.wikipedia.org/wiki/%e6%b8%a9%e5%ae%a4%e5%8a%b9%e6%9e%9c%e3%82%ac%e3%82%b9」であって、これを正確に文書に表示したとしても、そもそもどんなWebページかも分からないし、そのURLを入力して参照しようとする気も起こらない。 こうなると、参考資料の提示自体が論外で資料とは言えないことになる。

このような現象は、 Webページのファイル名に日本語や空白文字を含ませない配慮が必要な理由の根拠でもある。 本来公開して多くのヒトに閲覧されるべきページがアクセスできずに閲覧できなくなる可能性をあらかじめ回避するための現実的対策である。

URLに日本語などの文字が含まれている場合には、その文字列をURL エンコードしよう(正確には「パーセントエンコーディング」Percent-Encodingといい、RFC3986のSection 2.1で定義されている)。 )。

URLエンコードするためには、Webサービスを利用するのがよい。 その際、文字種別を選択することができる場合には「UTF-8」がよい。

Webサービス\href{http://tech-unlimited.com/urlencode.html}{URLエンコード・デコード: http://tech-unlimited.com/urlencode.html} に、URL内の記号(:)や(/)以外の問題の文字列を入力して、変換して得られる文字列をURLして完成させる。 以下の予約語はURLエンコードしない

以下のURLエンコードの予約語以外をURLエンコードする。
URLエンコードの予約語
大小ローマ字 (A-Za-z) 数字 (0-9) ハイフン (-) ピリオド (.)
アンダースコア (_) チルダ (~) コロン (:) スラッシュ (/)
疑問符 (?) シャープ (#) 括弧 ([ ] ( )) アットマーク (@)
感嘆符 (!) ドル記号 ($) アンパサンド (&) アポストロフィー (')
アスタリスク (*) プラス (+) コンマ (,) セミコロン (;)
等号 (=)

URLエンコードの具体例

Wki『学問のすゝめ』のURLは「http://ja.wikipedia.org/wiki/学問のすゝめ」である。 「学問のすゝめ」を変換(エンコード)してみよう。

演習2: 「学問のすゝめ」をURLエンコードして、上記を確かめなさい。

この結果をつかって、URL内の「学問のすゝめ」を置き換えて(UTF-8文字符号化で作成するLaTeXファイルの場合には)

とするのである。

しかし、この文字列をそのまま参考文献としては明らかにダメである(そのままこれを正しく入力できる読者も入力しようとする読者はいないからだ)。 hyperrefパッケージを使って日本語などを含むURL文字列をリンク文字列として、URLエンコードされた文字列にリンクするように書くのが正しい。

したがって、パッケージhyperrefを使って参考文献でWebページを参照する場合は、thebibliography環境では目的のURLを使って次のように書くのが正しい。

\documentclass{jsarticle}
.....
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper}
.....
\begin{document}
....
....

\begin{thebibliography}{99}
....
\bibitem{fukuzawa} 『\href{http://ja.wikipedia.org/wiki/
%E5%AD%A6%E5%95%8F%E3%81%AE%E3%81%99%E3%82%9D%E3%82%81}{http://ja.wikipedia.org/wiki/学問のすゝめ}』、
福沢諭吉(1876)
....
\end{thebibliography}
\end{document}

当然のことであるが、実際にタイプセットして目的のページにちゃんとアクセスできるかを必ず確かめよう。

演習3: Wikiの「学問のすゝめ」を参考文献とするLaTeXソースファイルをパッケージhyperrefを使って、このようにしてタイプセットし、生成されたPDFファイルがそのページにハイパーリンクされていることを確かめなさい。

インターネット上の参考資料

PDFファイルは印刷されるだけでなく、今日ではコンピュータやタブレット上で閲覧される場合が多い。 LaTeX文書は、今や紙に印刷されるための媒体ではなく、インターネット環境で読まれる電子書籍として書かれる必要がある。

LaTeXで論文やレポートを書く場合においては、文献情報リストなどでは、一次情報が電子ジャーナルとして提供されているのであれば、正確にそのページへリンクを張っておくべきである。 大学や自分の環境に応じて電子ジャーナルに常にフルアクセスできるわけではない(大学などが有料契約しているわけです)。

次の文献のフルアクセスは可能だろうか。

演習

演習: LaTeX文書 refer_original.zip(ZIP圧縮してある) を詳しく検討し、タイプセットしてPDFファイルとして閲覧しなさい。
演習: 文献情報など一次情報を可能な限りハイパーリンクとして埋め込んだPDF LaTeX文書を作成しなさい。