メインコンテンツに移動

相互参照

論文を書いていると,

・・・第3節で述べたように,・・・・とか,・・・圧力分布は,式(13)より・・・・

とか,書くことになります.でも,論文を書き進めれば,これらの番号は変わってしまいます.そこで,LyXでは,式などにラベルをつけておき,論文中では

 ・・・第[別の章につけたラベル]節で述べたように・・・とか,・・・圧力分布は,[式につけたラベル]より・・・・

という風に書いておくと,印刷時に自動的に正しい数字が入るようにできます.これを相互参照と呼びます.相互参照している文章は,他人の文章でも安全にコピペできますが,相互参照していない文章をコピペすると,番号がずれているので,コピペがばれます.とはいえ,てきとーにコピーすると,ラベルが見つからなかったりしますが,それは事前に確認できます.

ラベルの挿入

章節番号にラベルを挿入するには,該当する表題にカーソルを合わせて【挿入】【ラベル】をすると:

こんな感じに,デフォのラベルが登場します.デフォのラベルは,

  ラベルの種別:タイトル文字列

になっています.次の規則を守ったほうが健康に良いです:

  • ラベルの種別は,決して変更しない(変更すると,自動整形不可)
  • タイトル文字列は,簡単な英文のほうが便利
  • タイトル文字列には したバー _ とか, ハット ^ とか,数式っぽいのを入れるとバグにハマりやすい

ラベルをつけ終わると,

こんな感じに表示されます.また,【表示】【文章構造面】で【ラベルと参照】を選ぶと,どんなラベルが文章内に存在するか,確認できます:


数式にラベルを付ける場合には,数式内で【挿入】【レベル】します.あるいは二本指でコンテキストメニューを表示し,【数式ラベル】を選択して入力しても良いです.複数行の数式では,行ごとにラベルをつけられますが,常識的に,番号がつくのは最後の式ですよね.

 

図表番号も,キャプションの中にラベルを作成すればOKです.

 

一度ラベルを作成したのちも,ラベルの名前は随時変更可能です.ラベルを引用している箇所は,ラベルの名前を変更する際にLyXが開いていれば,自動的に追従してラベルの名前が変更されます.ユーザーがラベルの引用箇所を訂正して回る必要はありません.

ラベルの引用

定義したラベルを文章内に引用する方法はいろいろあります.

【挿入】【相互参照】を選ぶと,利用可能なラベルの一覧が出るので,そこから選択する方法

デフォルトでは,なんかラベルが無秩序に出てくるが,【聖女】を選ぶと美しく表示される:

  

挿入したいラベルの上で, 二本クリックして【参照としてコピー】し,挿入したいところにペーストする方法もあります.

引用先を間違えた場合,ラベルをクリックして訂正できます.

ラベルの自動整形

挿入したラベルは.印刷時に該当する数字になります.従って,例えば「・・・図参照:fig:limitのように・・・」と書けば,「・・・図3のように・・・」と印刷されます.ですが,これでは引用方法がバラバラになりがちです.そこで,引用を行っているラベルで二本指クリックし,【整形済み参照】にしておけば,統一的に引用できます.つまり「・・・整形済参照:fig:limitのように・・・」としておくわけです.

ただし,この場合,図ならば 図+番号, 表ならば 表+番号, 節ならば 第+番号+節,と整形したいわけで,これを事前に設定する必要がございます.これは,【文書】【設定】【LaTeXプリアンブル】で,次のように設定すれば良いんだニャ.でも,【文書】【設定】【文書クラス】で,【相互参照にrefstyleを使用】のチェックを外しておかないとダメ!(refstyleは日本語に対応していない)

\newrefformat{fig}{図~\ref{#1}}
\newrefformat{sec}{\ref{#1}節}
\newrefformat{tab}{Table~\ref{#1}}
\newrefformat{lem}{補題\ref{#1}}
\newrefformat{exa}{例\ref{#1}}
\newrefformat{exer}{演習\ref{#1}}
\newrefformat{prob}{問題\ref{#1}}

これは,ご覧の通り,ラベルの種別に応じて,番号 \ref{#1} のフォーマットを定めるものです.上の例では

図1,1節,Table 1, 補題1, 演習1, 問題1

というように整形されます.(整形せず,番号だけが欲しい場合には,引用を整形済参照ではなく,単なる参照のままにしておけばよい.)

Refstyle

上でダメ出しされているrefstyleですが,英文では大変便利です.やり方が違うので,メモしておきましょう.

refstyleの良いところは「文脈に応じて Fig. になったりFiguresになったりするんだけど?」というところに対応することです.

  • 英文では,文頭に省略記号が来るのはダメです.だから  Fig. 2 shows ... とか書き出せなくて,Figure 2 shows と書かなければならんのです.

そこで,プリアンブルに次のように書きます.

\newref{fig}{name=Fig.~,names=Figs.~,Name=Figure~,Names=Figures~}
                        \newref{tab}{name=Table~,names=Tables~,Name=Table~,Names=Tables~}
                        \newref{eq}{name=Eq.~,names=Eqs.~,Name=Equation~,Names=Equations~,refcmd=(\ref{#1})}

 

雰囲気でわかるように,普通の書式では Fig. となり, 文頭では Figure に, 複数形はsがつくわけです.ですがLyXには現状AIが搭載されていないため,どれを使うのかを,あんたが,指定する必要があります:

ここで複数とか大文字とかを選べるわけね.でも,やっぱり,図1はできても,「第1章」はできなくて「第章1」しかできないのよ.日本語と順番違うしね

LyX2.4.1でのrefstyle

たぶん, 【文書】【設定】【文書クラス】【相互参照にrefstyleを使用】にチェックを入れても, refstyleパッケージの設定はするが,パッケージのロードを忘れている.

しかたないので, 【文書】【設定】【LaTeXぷりあんぶる】で

\usepackage[noconfig]{refstyle}
\newref{fig}{name=.....}

とかしてあげよう.なお,noconfig ってのは,refstyle.cfg とか refstyle.def とかをロードしない.ロードしないと, refstyle.cfgに書いてある,多国語化したええっと「RSうねうね」というのが使えないが,そもそも理解できてないので使えてないので,ロードしていらんので, noconfig できるようになって素晴らしいということにしておこう.ええっとつまり,下の方で書いてある,refstyle.cfg だとか refstyle.def だとかいうあたりは,読み飛ばしてOKってことだ

  • さらに, Elsevierスタイルを使うと, elsarticle.cls で\fnref が定義されているのに, refstyle.cfg で \fnref を定義しようとするから, noconfigオプションを与えることができないと, refstyle.cfg を読んでいる途中でバグる. 
  • クソッタレでおせっかいなcfgは,読まない方が身のためである.

LyX2.0-2.3でのrefstyle

  • TeXLive2023だかで, なんか動かなくなったので, これに従って直さないといけないみたい. とはいえ, /usr/local/texlive/2023/texmf-dist/tex/latex/refstyle/refstyle.cfg の変更には管理者権限が必要.
  • なので, このファイル(refstyle.def)を文書フォルダーに置いておくと良い. refstyle.cfg を無視して refstyle.defを読むそうだ. 
  • だが, 直し方が不完全なのか,数式のラベルに_とか^とか,数式っぽいものがあるとバグる.

 

番号のつけ方

短い文書なら1, 2, .... でOKですが,長い文書なら 章番号.1 というようにつけたいですよね.基本的には

短い文書は jsarticle で書くので,これは数字だけ

長い文書は jsbook で書くので,章番号.数字

と決まっています.【文書】【モジュール】で,【数式番号を節ごとに振る】などを選ぶことも可能です.

ラベルのチェック

ラベルのチェックは,随時行われています.その結果は【表示】【文書構造面】【ラベル】で確認できます.欠落していたり,重複していたりすると,下図のように表示されます.

なお,複数のソースファイルから構成される場合でも,すべてのラベルが統一的にチェックされます.

File attachments
添付 サイズ
refstyle.zip 3.45 KB