相互参照を活用して正確に書く

ここでいう「正確に書く」とは、文章表現上の正確さではなく、文章が文書中の箇所を正確に指示できているように書くことである。 1〜2ページ程度の短い文書である場合にはこのようなことについて気にする必要はないが、5枚程度以上1000ページ程度の文書(身近にある雑誌や書物で確かめてもらいたい)になると、こうした配慮は欠かせない。

次のような文章は適切とはいえない。 この先を読む前に、自分なりにその理由を考えてみて欲しい。

......
次の表は、8月の東京大手町における気温と湿度を示したものである。
前ページの群馬県高崎市における気温と湿度の表とを比べてわかるように、
....
次節で詳しく紹介する日本における近年の気温や雨量に異常変動については、第5章で世界的な気候変動との関連で再度取り上げる。
......

文書中に使う図や表あるいは章や節の番号などを指し示して文章を書く場合、『次の』『先の』『前ページ』『次ページ』などといった言及している文章からの相対位置によって指定する文の書き方はたいへん危うい。 後から編集作業して、図表を追加・入れ替えたり、文字の大きさやページサイズやレイアウトなどの文書デザインの変更によって、そのような相対指定は意味をなさなくなってしまうからだ。

そのような混乱を回避する方法は唯一つ、図表や章や節の見出しに文書中で一意に定まるように組織的な通し番号を付けることである。 図表番号を付けて図1.2とか表3.4などと文中で図表を絶対指定することによって、文書内の任意の場所で特定の図や表に言及しても、間違いなくそれを参照することが可能になる。 ただし、『前節』『次節』、『第5章』になどの記述については配慮が必要である。 節や章の番号は編集作業(入れ替え・追加・削除など)によって番号を付け変える必要がある。 当然、目次情報の変更も生じる。

文書の「不正確さ」を正すために、もちろん文書を仕上げる最終段階で改めて精査する必要はある。 こうした校正作業は大変な労力を要するのだが、 途中で編集するたびに、番号の整合性をチェックして、訂正し続ける作業を誰がするのかという問題だ。 編集・著述作業の途中であっても、文書は常に正確に書かれている必要がある。

ここで問題にしたいことは、長大な文書作成において、編集作業の任意の段階で常に破綻なく正確であるように文書を作成することは、人間的作業としては途方も無い労力になることだ。 ワードプロセッサを使う場合、この問題を一貫した方法でクリアすることができない(文書を書く著者に立ち会う編集者は毎回こうした労力を投入し続けねばならない)。 LaTeX文書では、この問題を 明快に解決することができる(そのためには多少の手間は必要であるが、長大な文章になるほど常に正確に作成できるメリットに比べると、手間労力の割合は減少していく)。

「正確な」文書を作成することの意味を理解し、実際に実現してみせるだけでもLaTeXを使う意味がある。

演習: 以下で説明されている相互参照の方法を活用して、今までの(たとえば、Wordで作成した)レポートを書き直してみなさい(図や表が張り込まれていることは、ここでは想定していません)。 特に、参考文献の言及の仕方、引用の仕方、文章中の他の箇所への言及に注目して、読みやすくしかも正確な文書作成を心がけるように書き直してタイプセットしてみなさい。

ラベル名を設定して参照する

LaTeXでは、文中で参照したい章番号、節番号やそれらが登場するページ数を参照したり(第3章の「3」や節6.3の「6.3」や、節7.3.2(124ページの「124」など)、文献番号を参照したり(資料[12]の「12」)するときには、ラベル名で参照する。

ラベル名の設定には2種類ある。

ここでは、\label{ラベル名} によるラベル設定とその参照について説明する。

\labelによるラベルの設定

文中の任意の場所に

\label{ラベル名}

のようにして、ラベル名を設定することができる。 この行はタイプセットには何ら影響を与えない。 ラベルの使用できる文字は、LaTeXの特殊文字はだめで、空白他タブ文字などを使わないようにする。

文書の見出しを定める \chapeter{...}, \section{...}, \subsection{...}, \subsubsection{...} などにラベル\label{ラベル名}を設定することはたいへん有用である。 たとえば、次のようにしてラベル名を設定する。

\section{メロスは激怒}
\label{gekido}
メロスは激怒した。
必ず、かの邪智暴虐の王を除かなければならぬと決意した。
同様にして、\subsection{...} や \subsubsection{...} の直後にラベル名を設定するのである。

\refによるラベル番号と\pagerefによるページ数の取得

文中で\label{ラベル名}を指定したあれば、他の任意の場所(前後どこでもよい)に

\ref{ラベル名}

を書いて(参照 REFerence)、タイプセットによってそのラベルのラベル番号を取得することができる。 また、

\pageref{ラベル名}

を書いて(パージ参照 PAGE REFerence)、タイプセットによってそのラベルが登場したページ番号を取得することができる。

たとえば、次のようにして「メロスは激怒」の見出し番号を取得ことができる。

....
節\ref{gekido}では、メロスがなぜ怒ったのかが提示されている
(\pageref{{gekido}ページ)。
....
しかし、この怒りは\pageref{from_croud}ページの
節\ref{from_croud}に至って、群衆の歓喜によって昇華されるのである。
....
「異常気象」というラベル付けた文言が登場したページ数を\pageref を使って参照するには次のように書く。
.....
穏やかな四季の季節変化を味わってきた日本の気象事情は近年大きく変わってきている。
事実、異常気象
\label{unusual-weather}
と報告される事例が急送している。
.....
.....
異常気象現象は、\pageref{unusual-weather}ページで紹介した日本の事例だけでなく世界中で観察されている。
たとえば、
.....

文章の追加・編集などで通り番号が変化したとしても、常に正確な通し番号で見出し行を取得・参照できるようになる。 たとえば、次のような使い方ができる。

その他の通し番号

他にも次のような環境内でも、こうした通し番号が付き、環境内においた \label{ラベル名} によって文中のどこからでも正確に番号や登場ページ数(\pageref)を取得・参照することができる。

  • figure環境。図番号の参照は \ref{ラベル名}
  • table環境。表番号の参照は \ref{ラベル名}
  • equation環境などの数式環境。式番号の参照は \eqref{ラベル名}
  • \citeによって文献番号を取得

    参考文献情報の書き方で説明したように、文末に置いた 参考文献情報(references)のリストを列挙したthebibliography環境の 参考文献項目\bibitemで各参考文献をラベルしておく。

    \begin{thebibliography{99}
    \bibitem{参照ラベル名1} 文献情報
    \bibitem{参照ラベル2名} 文献情報
    ......
    ......
    \end{thebibliography}
    

    タイプセットすると、thebibliography環境は\bibitemの登場順に[1], [2], [3] ..と文献番号が付くが、 本文中でこれらの文献情報を参照するには、\citeを使う。

    ....といったことが指摘されている\cite{ラベル名}。
    

    相互参照の利用例

    左図のように、LaTeX文書では文書の見出し(今の場合、「2.3 Dirichlet核」)や、文書中の(「図2.6」)や、さらには数式番号(「(2.14) や (2.15)」)や定義に自動的に通し番号をつけることができる。

    そこで、問題になるのはそうした図表や数式に文中で言及する方法である。 左図では、文中で 「…で定義し、特に T = 2π の場合(図 2.6)は」 と、図番号で参照できるようにその図ラベル名タイプセットされている。


    タイプセット後に図番号が 2.6 であることを知ったからといって、TeXソースファイルに『…で定義し、特に T = 2π の場合(図 2.6)は』とそのまま図番号などを書いてはいけない。 TeXソースファイルでは 『で定義し、特に$T=2\pi$の場合(図\ref{fig:dirichlet_kernel})は』 というように、 \ref{図ラベル名} のようにして中括弧内に文中で\label{図ラベル名}と定義した図ラベル名を記入する。 タイプセット後に図の通し番号が得られるのである。