相互参照したい(\ref

% 参照キー(=ラベル)を設定
\label{キー}

% 参照番号を取得
\ref{キー}

% 参照ページ数を取得
\pageref{キー}

相互参照では、参照先に設定したラベルを参照元で呼び出して使います。 \labelコマンドで参照先にラベル(一意のキー)を作成します。 \refで参照番号を取得できます。 \pagerefで参照ページを取得できます。

見出しを参照したい(\ref

\section{相互参照したい}
\label{sec:キー}

\subsubsection{ラベルをつける}
\label{subsec:キー}


% また別のセクション
相互参照については\ref{sec:キー}章に書きました。
参照先を作成するコマンドは\ref{subsec:キー}節にも書きました。

見出しを参照する場合は、 章見出し(\section)、節見出し(\subsection)コマンドのあとにラベルを設定します。

\pageref{sec:キー}ページに書きました。
\pageref{subsec:キー}ページに書きました。

また\pagerefコマンドでページ番号を取得できます。

ヒント

管理のしやすさ向上のため、ラベル名にはsec:subsec:などのように、 定義した環境の接頭辞をつけることが多いみたいです。 LaTeX内部では、環境ごとに参照カウンターが存在するので、必須ではありません。

図を参照したい

\begin{figure}
  \centering
  \includegraphics[オプション]{ファイル名}
  \caption{キャプション}
  \label{fig:キー}
\end{figure}

それについては図\ref{fig:キー}にまとめました。

figure環境の中でラベルを定義すると、図の番号を参照できます。 \ref自体は番号を返すため「図」などを自分で書く必要があります。

参照カウンターしたい

\newcommand{\figref}[1]{\ref{#1}}
\newcommand{\tabref}[1]{\ref{#1}}
\newcommand{\equref}[1]{式(\ref{#1})}
\newcommand{\secref}[1]{\ref{#1}}

これは、僕が修論で実際に使っていた設定です。 「図」「表」「式」などの入力を省略したかったので、 \newcommandで自作コマンドを定義しました。

参考

いまなら以下のコマンドを使います。

相互参照のしくみ

相互参照を処理するために、複数回(最低2回)のコンパイルが必要です。 そうしないと、相互参照した箇所が「??」のままになってしまいます。

なぜ複数回のコンパイルが必要なのか、 相互作用のしくみを理解しておくとよいと思います。

1回目のコンパイル

文書内にある相互参照のラベル(\label)を認識し、すべてのラベルのデータなどを含む補助ファイル(.auxファイル)を生成する

2回目のコンパイル

.auxファイルの内容を、メインの.texファイルと組み合わせて、ラベルの参照番号を取得する

n回目のコンパイル

「??」がなくなるまでコンパイルを繰り返す

このような処理は、パソコンに任せるのが一番です。 TeXLiveにはlatexmkというツールが付属しています。 簡単な設定方法は「タイプセットしたい(latexmk)」にまとめました。

レポートの提出直前などで急いでいるときほど、 こういったうっかりミスをしがちです。 はじめからlatexmkを設定し、常用しておきましょう。