# 相互参照したい(`\ref`) ```latex % 参照キー(=ラベル)を設定 \label{キー} % 参照番号を取得 \ref{キー} % 参照ページ数を取得 \pageref{キー} ``` 相互参照では、参照先に設定した**ラベル**を参照元で呼び出して使います。 `\label`コマンドで参照先にラベル(一意のキー)を作成します。 `\ref`で参照番号を取得できます。 `\pageref`で参照ページを取得できます。 ## 見出しを参照したい(`\ref`) ```latex \section{相互参照したい} \label{sec:キー} \subsubsection{ラベルをつける} \label{subsec:キー} % また別のセクション 相互参照については\ref{sec:キー}章に書きました。 参照先を作成するコマンドは\ref{subsec:キー}節にも書きました。 ``` 見出しを参照する場合は、 章見出し(`\section`)、節見出し(`\subsection`)コマンドのあとにラベルを設定します。 ```latex \pageref{sec:キー}ページに書きました。 \pageref{subsec:キー}ページに書きました。 ``` また`\pageref`コマンドでページ番号を取得できます。 :::{hint} 管理のしやすさ向上のため、ラベル名には`sec:`や`subsec:`などのように、 定義した環境の接頭辞をつけることが多いみたいです。 LaTeX内部では、環境ごとに参照カウンターが存在するので、必須ではありません。 ::: ## 図を参照したい ```latex \begin{figure} \centering \includegraphics[オプション]{ファイル名} \caption{キャプション} \label{fig:キー} \end{figure} それについては図\ref{fig:キー}にまとめました。 ``` `figure`環境の中でラベルを定義すると、図の番号を参照できます。 `\ref`自体は番号を返すため「図」などを自分で書く必要があります。 ## 参照カウンターしたい ```latex \newcommand{\figref}[1]{図\ref{#1}} \newcommand{\tabref}[1]{表\ref{#1}} \newcommand{\equref}[1]{式(\ref{#1})} \newcommand{\secref}[1]{第\ref{#1}章} ``` これは、僕が修論で実際に使っていた設定です。 「図」「表」「式」などの入力を省略したかったので、 [\newcommand](./latex-newcommand.md)で自作コマンドを定義しました。 :::{seealso} いまなら以下のコマンドを使います。 - [hyperref](./latex-hyperref.md)の`\autoref` - [cleveref](./latex-cleveref.md)の`\cref` ::: ## 相互参照のしくみ 相互参照を処理するために、複数回(最低2回)のコンパイルが必要です。 そうしないと、相互参照した箇所が「??」のままになってしまいます。 なぜ複数回のコンパイルが必要なのか、 相互作用のしくみを理解しておくとよいと思います。 1回目のコンパイル : 文書内にある相互参照のラベル(`\label`)を認識し、すべてのラベルのデータなどを含む補助ファイル(`.aux`ファイル)を生成する 2回目のコンパイル : `.aux`ファイルの内容を、メインの`.tex`ファイルと組み合わせて、ラベルの参照番号を取得する n回目のコンパイル : 「??」がなくなるまでコンパイルを繰り返す このような処理は、パソコンに任せるのが一番です。 TeXLiveには`latexmk`というツールが付属しています。 簡単な設定方法は「[](latex-latexmk.md)」にまとめました。 レポートの提出直前などで急いでいるときほど、 こういったうっかりミスをしがちです。 はじめから`latexmk`を設定し、常用しておきましょう。