天地有情

[LaTeX] reference --- 相互参照 のいろいろ

§1 はじめに

更新版: 2017/05/07(題目,他の部分修正)

reference --- 相互参照 のいろいろ

LaTeX では数式番号や図表番号などのように,カウンタの制御で自動的に
付けられる番号が多くあります.これらの番号は,それらに適当な
「参照ラベル」を付け本文の任意の場所で,その「参照ラベル」を入力
すると,そこに出力することができます.これが相互参照です.
念の為ですが,コンパイルは2回行います.

■ 主な参照番号には以下があります.

(a) 自動数式番号
(b) 部・章・節・段落の番号
(c) 図・表の番号
(d) 定理番号
(e) 脚注番号
(f) 箇条書き(enumerate)番号
(g) ページ番号

■ 「相互参照」パッケージの種類

次のようなパッケージが用意されています.

reference01.png

§2 使い方

(1)LaTeX標準の相互参照

■ \label, \ref の例

reference02A.png

■ \label, \pageref ページ参照の例

reference02B.png

(2)saferef.sty の相互参照

ダウンロード: http://www.ctan.org/pkg/saferef

マニュアル: 同梱の safe.pdf をお読みください.

「型付け」の参照を表現する手段を提供します.これにより,
ラベルの種類を強制することによってエラーを排除します.
\ref を\figureref, \sectionref, \eqrefなどに置き換えます.
例えば,\ref{figure:key}の代わりに\figureref{key}を入力します

LaTeX標準に比べ,より強い型を通じて,より安全な相互参照を可能にします.

下記サンプルは同梱の example.tex と同じです.

reference03.png

(3)varioref.sty の相互参照

ダウンロード: TeXLive/W32TeX などには標準でインストールされています.
        (.../tex/latex/tools/varioref.sty)

マニュアル: コマンドラインから texdoc variorefを実行するか,
       上記に同梱の varioref.pdf をお読み下さい.
       (.../doc/latex/tools/varioref.pdf)

varioref.sty が提供する \vref や \vpageref は,参照先の位置によって出力を適当に変えて
くれ,参照先が分かりやすくなります(英語表示).出力文字列は日本語にカスタマイズ可能です.

varioref.sty をエディタで開いて,\DeclareOption{english} の箇所を参考に日本語化できます.
すでに,「LaTeX2e文典」(生田誠三著)に日本語化されたものがあり,その一部を修正したものを
varioref-ja.sty として以下に示します.ここでのサンプルは,この varioref-ja.sty を利用
しています.

%%%%%%%%%%%%%%%%%%%%%%%%% varioref-ja.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{varioref}
\renewcommand{\reftextbefore}{前ページ}
\renewcommand{\reftextfacebefore}{\reftextvario{前ページ}{左ページ}}
\renewcommand{\reftextafter}{次ページ}
\renewcommand{\reftextfaceafter}{\reftextvario{次ページ}{右ページ}}
\renewcommand{\reftextcurrent}{本ページ}
\renewcommand{\reftextfaraway}[1]{\pageref{#1}~ページ}
\newcommand{\pvref}[1]{\unskip\@vpageref[\reftextcurrent]{#1}の \ref{#1}}
\renewcommand{\vref}[1]{\unskip\@vpageref[\unskip]{#1}\hspace{0.4em}\ref{#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

reference04.png


■ varioref.sty を日本語化したものが varioref-ja.sty です.

■ \varioref.sty では現在ページが左(偶数)ページのとき,次ページにおける\vrefは
  "on the facing page" と出力されます.

■ 現在ページが右(奇数)ページのとき,次ページにおける\vrefは
  "on the following page" と出力されます.

(4)xr.sty の相互参照

ダウンロード: TeXLive/W32TeX などには標準でインストールされています.
        (.../tex/latex/tools/xr.sty)

マニュアル: コマンドラインから texdoc xr を実行するか,
       上記に同梱の xr.pdf をお読み下さい.
       (.../doc/latex/tools/xr.pdf)

xr.sty を登録すると,外部の文書ファイルの参照ラベルが参照できます.

■ 参照する外部ファイルを AA.tex と BB.tex とし,各々コンパイルしておきます.

■ メインの main.tex プリアンブルで参照する文書ファイルを \externaldocument を使って宣言し,
  コンパイルします.

reference05.png

(5)titleref.sty の相互参照

ダウンロード: TeXLive/W32TeX などには標準でインストールされています.

マニュアル: コマンドラインから texdoc titleref を実行するか,
       上記に同梱の titleref.pdf をお読み下さい.

titleref.sty は chapter , section, caption などの "名称" を相互参照します.

reference06.png


セクションタイトルの文字列のみが表示されます.

(6)smartref.sty の相互参照

ダウンロード: http://www.ctan.org/pkg/smartref

マニュアル: 同梱の smartref-doc.pdf をお読みください.

smartref.sty は、\refコマンド の機能を拡張します.
正確には,ラベルが設定されるたびにラベルと一緒にカウンタの値がラベルと共に記録されてます.
これらのカウンタの値が \chapterref や \sectionref のようなコマンドを使用して呼び出すことができます.
以下にサンプルを示します.

reference07.png


■ プリアンブルに \addtoreflist{chapter} あるいは \addtoreflist{section} を宣言し,
  その後,すべての\labelは、それが発生した章節と一緒に記録されます.

■ \chapterref や \sectionref で参照はできます.

■ \byname は名前参照になります.(\usepackage[byname]{smartref}  bynameオプション要)

(7)prettyref.sty の相互参照

ダウンロード: TeXLive/W32TeX などには標準でインストールされています.

マニュアル: コマンドラインから texdoc prettyref を実行するか,
       上記に同梱の prettyref.pdf をお読み下さい.

Prettyrefは,ラベルの参照を作成し「自己識別」する方法を指定するコマンド \newrefformat を提供します.
事前定義の\newrefformatは次の通りです.識別は接頭辞のラベル名を使用して\labelコマンドで設定されます.

\newrefformat{eq}{\textup{(\ref{#1})}}
\newrefformat{lem}{Lemma \ref{#1}}
\newrefformat{thm}{Theorem \ref{#1}}
\newrefformat{cha}{Chapter \ref{#1}}
\newrefformat{sec}{Section \ref{#1}}
\newrefformat{tab}{Table \ref{#1} on page \pageref{#1}}
\newrefformat{fig}{Figure \ref{#1} on page \pageref{#1}}

使い方は例えば,テーブルにラベルを付ける \label{tab:1}
フォーマットされたものにアクセスするには,\prettyref{tab:1}
\pageref{tab:1} および \ref{tab:1} も,動作します.
以下にサンプルを示します.

reference08.png

■ 次のようにプリアンブルで\newrefformatを再定義することもできます.

\newrefformat{cha}{第 \ref{#1}章}
\newrefformat{sec}{第 \ref{#1}節}

(8)fancyref.sty の相互参照

ダウンロード: TeXLive/W32TeX などには標準でインストールされています.

マニュアル: コマンドラインから texdoc fancyref を実行するか,
       上記に同梱の fancyref.pdf をお読み下さい.

fanyref.sty はラベルの接頭辞が事前定義されています.再定義も可能です.

\newcommand*{\fancyrefchaplabelprefix}{chap}
\newcommand*{\fancyrefenumlabelprefix}{enum}
\newcommand*{\fancyrefeqlabelprefix}{eq}
\newcommand*{\fancyreffiglabelprefix}{fig}
\newcommand*{\fancyreffnlabelprefix}{fn}
\newcommand*{\fancyrefseclabelprefix}{sec}
\newcommand*{\fancyreftablabelprefix}{tab}

使い方は例えば,\label{tab:1},\label{fig:1},\label{sec:1}などのようにラベルを付けるます.
アクセスするには,\fref{fig:1}や \Fref{sec:1}などです.

\fref は文章内に使用し,小文字出力(例: "figure 1")であり,
\Fref は文の先頭で使用し,大文字出力(例: "Figure 1")です.

以下にサンプルを示します.

reference09.png

(9)cleveref.sty の相互参照

ダウンロード: http://www.ctan.org/pkg/cleveref

マニュアル: 同梱の cleveref.pdf をお読みください.

cleverefパッケージは、LaTeX相互参照機能を増強します.

■ よく使われるコマンド:

\cref は文章内に使用し,小文字出力(例: "figure 1")であり,
\Cref は文の先頭で使用し,大文字出力(例: "Figure 1")です.

\crefrange はラベルの範囲を参照したい場合に使用します.
e.g. \crefrange{eq1}{eq5} ---> eq.(1)~(5)

\cpagerefは ページ参照 \cpageref{<label>}
\cpagerefrange はページ範囲を参照

reference10.png

(10)refcheck.sty の相互参照チェック

refcheck.sty は \ref で \label を参照しているか否かをチェックします.

reference11.png

(EOF)
スポンサーサイト
  1. 2016/07/21(木) 08:50:30|
  2. LaTeX Tools