ハイパーリンク付き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
- hyperref.sty がシステムになければ、パッケージhyperrefをダウンロード(実際に必要なのはファイル hyperref.sty である)を次のパッケージPXjahyperと同じく、自分の$TEXMFHOME/tex/ 内のどこかに置く。
- 次に、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 のオプションを以下にその一部を掲げておく。
オプション | デフォルト | 意味・機能 |
---|---|---|
bookmarks | true | ブックマークを作成する |
bookmarksnumbered | tocdepth | しおりのレベル |
bookmarksopen | false | ブックマークを開く |
colorlinks | false | カラーリンクを使用する場合には true を指定 |
anchorcolor | black | anchor テキスト用のカラー |
linkcolor | red | 内部参照リンク用のカラー |
citecolor | green | 文献参照リンク用のカラー |
filecolor | magenta | ローカルファイル参照リンク用カラー |
urlcolor | cyan | 外部参照 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点が問題になる場合がある。 これらは対策可能である。
- リンク文字列に特殊記号があって、タイプセットに失敗する
- URLに日本語・中国語やフランス語・ドイツ語など英数字以外の文字列が含まれていて、ブラウザが起動しない。
リンク文字列に特殊記号があって、タイプセットに失敗する
パッケージhyperefを使って \href{url}{text} とする際に、textにLaTeXの特殊文字が含まれる場合には、それをエスケープして記載しなければならない(リンク文字列 text = url と目的のURLである場合には、単に \url{URL} と記載すればよい)。
たとえば、textに「cafe & bar」や「50%以上」のようにリンク文字列アンパサント (&) やアンダーバー (_)があると、タイプセットに失敗する。 またパーセント(%)は行末までコメントとして扱われて表示されなくなってしまう。 これらの文字ははLaTeXの特殊記号(特別な役割を持たされている文字)である。 そのまま普通の文字として表示する場合には、バックスラッシュ(\)をつけてエスケープして、 \&+ 、\_ 、\% のように書く。 また、チルダ (~) を表示する場合には \textasciitilde{} と記す(最後の括弧{}は必要だと思ってもらいたい)。
読み | 出力 | 入力 |
---|---|---|
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や利用しているブラウザに依存している。
このようなパーセント記号(%)を使って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/学問のすゝめ」である。 「学問のすゝめ」を変換(エンコード)してみよう。
- UTF-8: %E5%AD%A6%E5%95%8F%E3%81%AE%E3%81%99%E3%82%9D%E3%82%81
- EUC-JP: %B3%D8%CC%E4%A4%CE%A4%B9%A1%B5%A4%E1
- Shift_JIS: %8Aw%96%E2%82%CC%82%B7%81T%82%DF
この結果をつかって、URL内の「学問のすゝめ」を置き換えて(UTF-8文字符号化で作成するLaTeXファイルの場合には)
- http://ja.wikipedia.org/wiki/%E5%AD%A6%E5%95%8F%E3%81%AE%E3%81%99%E3%82%9D%E3%82%81
とするのである。
しかし、この文字列をそのまま参考文献としては明らかにダメである(そのままこれを正しく入力できる読者も入力しようとする読者はいないからだ)。 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}
当然のことであるが、実際にタイプセットして目的のページにちゃんとアクセスできるかを必ず確かめよう。
インターネット上の参考資料
PDFファイルは印刷されるだけでなく、今日ではコンピュータやタブレット上で閲覧される場合が多い。 LaTeX文書は、今や紙に印刷されるための媒体ではなく、インターネット環境で読まれる電子書籍として書かれる必要がある。
LaTeXで論文やレポートを書く場合においては、文献情報リストなどでは、一次情報が電子ジャーナルとして提供されているのであれば、正確にそのページへリンクを張っておくべきである。 大学や自分の環境に応じて電子ジャーナルに常にフルアクセスできるわけではない(大学などが有料契約しているわけです)。
次の文献のフルアクセスは可能だろうか。
- Global, regional, and national prevalence of overweight and obesity in children and adults during 1980—2013: a systematic analysis for the Global Burden of Disease Study 2013
- Use of Cholera Vaccine in an Outbreak