// LaTeX 入門に加える予定です。ヘッダー部分は後日作業します。(2015-06-11)
// 「図表」の次、「文献引用」の前に入れようと思います。

* 相互参照とリンク [#aa45fcc2]

さきほどの「図表」では,図や表の番号を本文中で参照するという作業を行いました。
LaTeX ではほかにも,数式番号や引用文献の番号などを参照することができます。
ここで,そのような相互参照とリンクについて説明します。

#contents


** 相互参照とは [#db0ce011]

// 大友さんによる「文献リストと相互参照,および索引の作り方」(インターネットアーカイブ)
// http://web.archive.org/web/20081231221606/http://www.klavis.info/bib.html
// をもとに,一部変更を施して移植しました。
// パブリックドメインにしていただいたことに感謝いたします。

例えば,○○の絵のつもりで「図38にあるように」などと書きたいときに,本当に○○の図の番号は38でいいのか不安になることもあるでしょう。
また,ついでにその図が置かれているページも示したいというときにも,いちいちページ番号を確認するのは面倒です。

文献の引用でも「××第2巻によると・・・」と書いていて,文献リストの番号を一緒に示したいとき,いちいち文献リストを確認しにいくのは面倒ですね。

こんなとき,次のように思うことがあるはずです。

参照先の番号やページが変わったら,自動的に参照もとの番号やページの記述も変わってくれたらなぁ。  

そうした願いをかなえるのが「相互参照」です。


** ラベル参照の例 [#h84e81eb]

table の表番号,figure の図番号,equation の式番号等をそれぞれ参照したいときは,\label{目印名} という命令で目印(ラベル)を付けておきます。
そして,後で \ref{目印名} で表・図・式番号を,\pageref{目印名} で \label のあるページ数を出力することが出来ます。

たとえば,

 \begin{equation} \label{WinnersEQ}
   W = A + E + 100M
 \end{equation}

と書いたものが,式番号(2),12ページに出力されたとすると

 クラーウィスの勝利の方程式(式\ref{WinnersEQ} ,\pageref{WinnersEQ} ページ)によると,…

の出力結果は,

 クラーウィスの勝利の方程式(式2,12ページ)によると,…

となります。


** ラベルの付け方の工夫 [#b692d432]

相互参照はたしかに便利な機能ではありますが,「どこがどのラベルか」が分かりにくくなってしまうのは事実です。
そこで,ラベル名を覚えやすくするとよいでしょう。

たとえば数式なら

 \label{fig:理想気体の状態方程式}  

などと「参照先の種類」がわかる言葉をラベル名の頭につけることで,"fig:"(FIGure,つまり図)だから式の「理想気体の状態方程式」ではなく,図を参照するんだな,と分かりやすくすることができます。
例えば,以下のような例をあげておきます。

|参照先の種類|ラベル名の付け方|参照のしかた|
|図|\label{fig:名前}|\ref{fig:名前}|
|表|\label{tab:名前}|\ref{tab:名前}|
|数式|\label{eq:名前}|\ref{eq:名前}|
|章・節|\label{sec:名前}|\ref{sec:名前}|


** リンクの付け方 [#ocae7881]

ウェブサイトなどの URL をソース中に書き込みたいときは,プリアンブルに
 \usepackage{url}
と書いておき,URL を挙げたい場所で例えば
 \url{http://oku.edu.mie-u.ac.jp/~okumura/texwiki/}
のように書きます。
こうすれば,リンク無しではありますが URL をタイプライタ体で出力することができます。

しかし,さらに HTML と同じようにハイパーリンクを付けたい場合もあるでしょう。
そういう場合には [[hyperref]] パッケージを使います。
hyperref パッケージを使うと,いま説明した相互参照の「式2」や「図38」のような番号からも,同じ文書中の該当する箇所へリンクを飛ばすことができます。


** hyperref パッケージによるハイパーリンク [#e8c0eb2e]

プリアンブルに
 \usepackage[dvipdfmx]{hyperref}
と書くと hyperref パッケージが読み込まれます。

この「ハイパーリンクを付ける」という作業は,先ほどの「図の取り込み」と同様に ''LaTeX 自身の機能ではありません''。
実際には,“dvi ファイルの中に書き込まれたハイパーリンクの取り扱いに関する指示”を,[[dvipdfmx]] などのソフトウェアが解釈します。
そこで,hyperref パッケージにも graphicx パッケージ同様,(u)pLaTeX + dvipdfmx でタイプセット(あるいは ptex2pdf でタイプセット)している場合は忘れずに dvipdfmx オプションを付けましょう。