2003 CNS GUIDE
copyright
 

3.5 相互参照をする

LaTeXではいくつかの項目について参照ラベルを利用することで,その項目の出 力されているページ数やその項目の番号などを自動的に参照して出力できます. ユーザは参照される章節や図表の番号の具体的な値を気にすることなく,参照で きます.

3.5.1 相互参照できる項目

LaTeXでは,次のような項目を相互参照できます.

これらの項目に参照用のラベルをつけておくことで相互参照できます.

3.5.2 ラベルをつける

参照用のラベルはそれぞれの項目の直後に\labelコマンドを利用すること で指定できます.ラベルには一部の特殊記号を除いて,半角英数字や全角文字な どを利用できます.またアルファベットの大文字と小文字は区別されま す.ラベルは単なる文字列として扱われるので特に意味を持たせる必要はありま せんが,ユーザが識別しやすいような文字列にするとよいでしょう.この例を次 に示します.



\labelコマンドは必ず参照したい項目のコマンドの直後に記述します. 参照したい項目の前に記述すると,それより前にある項目を参照してしまいます. またソースファイル中の複数箇所で同じラベルを指定すると参照できなくなるの で注意してください.

3.5.3 参照する

参照したい項目にラベルをつけたら,その項目を参照したい箇所で\ref あるいは\pagerefコマンドで参照します.\refコマンドは参照さ れる項目の番号を参照し,\pagerefコマンドは参照される項目が出力さ れているページ数を参照するのに用います.どちらも引数に参照したい項目につ けたラベルを指定します.次にsec:markというラベルを参照した場 合の例を示します.




相互参照をするには最低2回のLaTeX処理をします.1回目 のLaTeX処理ではラベル情報をauxファイ ル([*])に出力します.この際出力されるのは,ラベル用の文字列と参照される項目の番号とページ番号です.2回目 のLaTeX処理でそれらのデータが\refあるいは\pagerefコマンド部分 で読み込まれ,正しい出力が得られます.

3.5.4 注意事項

LaTeX処理中に次のようなメッセージが出力された場合,該当するラベルが指 定されていないか,\refや\pagerefコマンドの引数が間違ってい ることがあります.このような場合は正しいラベルに変更してください.


LaTeX Warning: Reference 'sec:mart' on page 21 undefined.

また次のようなメッセージが出力された場合は,該当するラベルが重複して 指定されていることを示しています.この場合も正しく変更する必要があります.


LaTeX Warning: Label 'sec:mark' multiply defined.

相互参照をするとLaTeX処理時に次のように表示されることがあります.


LaTeX Warning: Label(s) may have changed. Rerun to get cross-references
right.

これは相互参照のラベル位置が変化したり,新しいラベルを追加したときに出力 されるメッセージで,もう1度LaTeX処理をする必要があることを示しています. このような場合はもう1度LaTeX処理します.またソースファイルを変更してい ないにも関わらず,何度LaTeX処理をしてもこのようなメッセージが出力され る場合は,プリアンブルに\nofilesコマンドを記述します.これによっ てauxファイルが更新されなくなるので上記のようなメッセージは 表示されなくなります.\nofilesコマンドは文書を完成させてから最後 に記述します.