相互参照 (\labelコマンドと\refコマンド)

情報リテラシ第一 / 情報リテラシ第二

見出しの相互参照

章や節などの見出し、enumerate環境の項目番号、図表番号などはpLaTeXeが自動的にふります。このため、新しい章を加えたり、章の順序を入れ替えても、既存の章の番号を自分でつけ直したりする手間が省ける点が便利です。

これらの自動的にふられた番号を参照するためには、番号が定まる箇所でその番号に「名前」をつけ、参照したい個所でその名前を使って番号を参照します。番号に名前を与えるコマンドが\labelで、\labelコマンドで与えられた名前を使って番号を参照するコマンドが\refコマンドです。

\sectionコマンドのような見出し用コマンドを参照するためには、見出しコマンドの直後に\labelコマンドを使ってその見出しに名前を与えます。そして本文中のほかの箇所でその見出しを参照したい場合には、その名前を\refコマンドに与えます。

例を見てみましょう。「相対論の着想」という見出しがあったとします。この見出しに該当する\sectionコマンドに続けて以下のように\label {着想}というコマンドを挿入することで、\sectionコマンドが生成する節番号に「着想」という名前をつけることができます。

\section {相対論の着想}
\label {着想}
20世紀においてもっとも偉大な...

次にこのように「着想」と名付けた節の番号を参照する方法について見ていきましょう。以下のように\refコマンドのパラメタに「着想」を与えれば、この箇所の\refコマンドに対応する場所に上の見出しの番号が挿入されます。

\ref {着想}節で見てきたように、アインシュタインの相対論についての着想は...

箇条書き、図表、数式などの相互参照

pLaTeXが自動的に番号をつけるのは見出しだけには限りません。ほかに、enumerate環境を用いた箇条書きの項目番号、figure環境を用いた図の番号、table環境を用いた表の番号、数式番号なども相互参照の対象となります。こういったものについても前述の\labelコマンドと\refコマンドを利用することができます。

図表番号や数式番号の参照については、それぞれ図の挿入方法の解説表の挿入方法の解説数式の扱いの解説をご覧下さい。

箇条書きの項目番号の参照の例

以下はウェブに関する最も基礎的な技術を箇条書きに整理したものです。
enumerate環境を用いることで、ここに挙げた3項目には 1, 2, 3 と
番号がつけられます。

\begin {enumerate}

\item 世界中に広がるウェブのなかで、個々のウェブページを一意に特定するウェ
ブページの名前です。ウェブページのなかに他のウェブページの URL を記載する
ことでハイパーリンクを作成することができます。

\item ウェブサーバに保存されているウェブのデータを取得するための通信
プロトコルがHTTPです。ウェブブラウザにURLを入力するとURLに対応するウェブ
サーバに該当するページを要求し、そのページを取得しますが、ここでの通信の作
法を定めたものがHTTPです。

\item ウェブページの内容を規定する文法です。

\end {enumerate}

この箇条書きは以下のような感じで表示されます。

  1. 世界中に広がるウェブのなかで、個々のウェブページを一意に特定するウェブページの名前です。ウェブページのなかに他のウェブページの URL を記載することでハイパーリンクを作成することができます。

  2. ウェブサーバに保存されているウェブのデータを取得するための通信プロトコルがHTTPです。ウェブブラウザにURLを入力するとURLに対応するウェブサーバに該当するページを要求し、そのページを取得しますが、ここでの通信の作法を定めたものがHTTPです。

  3. ウェブページの内容を規定する文法です。

この箇条書きのHTTPに関する記述を文章の他の箇所で参照するときに「ウェブ技術に関する箇条書きの第2項で解説したHTTPは〜」と書いたとします。そのあとで、著者の気紛れから箇条書きの順番を入れ替えたとしたら、「箇条書きの第2項」と書いた箇所も適切に修正しなくてはなりません。でも、修正を忘れる可能性も高そうですね。

このようなあぶなっかしさを避けるためには、\labelコマンドと\refコマンドを利用するのが賢明です。以下のようにHTTPについての記述の最後に\label {http}コマンドを書いておけば、この\itemコマンドが生成する項目番号をhttpというラベルで参照することができます。

\item ウェブサーバに保存されているウェブのデータを取得するための通信
プロトコルがHTTPです。ウェブブラウザにURLを入力するとURLに対応するウェブ
サーバに該当するページを要求し、そのページを取得しますが、ここでの通信の作
法を定めたものがHTTPです。\label {http}

項目番号を参照するときには以下のように コマンドを用います。

ウェブ技術に関する箇条書きの第\ref {http}項で解説したHTTPは〜

ページ数の相互参照

ここまで\refコマンドを用いてpLaTeXが自動生成した番号を参照できることを説明しました。場合によっては、都合よく見出しや箇条書きの項目のない箇所を参照したい場合もあります。本の場合だと「123ページに引用した***の詩の一節は...」などと書きます。このようにページ番号を用いて参照したい場合はどのようにすればいいのでしょう。

ここまで\labelコマンドは番号を生成するコマンドの直後に使いなさいと書きましたが、実は\labelコマンドは文書中のどこにでも自由に用いることができるのです。そしてそこで名付けられたラベルを\pagerefに与えることで、該当する\labelコマンドが表れるページ数を参照できるのです。

たとえば、前述のウェブ技術に関する記述を本文の全然異なるページから参照することを考えてみます。その場合には、以下のように同じラベルを\pagerefコマンドと\refコマンドを用いることで、ページ数も項目番号もともに参照することができます。

\pageref {http}ページのウェブ技術に関する箇条書きの第\ref {http}項で解説したHTTPは〜