レポート等を作る際に、いくつか文献を参照したはずです。そのリストを作る環 境がthebibliography環境です。(EasyTeX では[TeXテキスト (T)] -> [文献 リスト作成 (B)] と選ぶと、「文献数はいくつですか」と聞かれますので、分件 数を入力してOKを押します。)「そんなの\enumerate環境(番号付き箇条書きの 環境でした)でいいじゃないか」と思うかもしれませんが、参考文献のリストに は、それなりの形式があり、thebibliography環境ではその形式に従ったやり方 で文献リストを作ってくれます。ぜひこちらを利用しましょう。
文献リストの文法は次の通りです。
\begin{thebibliography}{99}
\bibitem{参照ラベル} 文献名
\end{thebibliography}
99という数字は、文献リストの数に応じて参考 文献の字下げの幅を決める文字列です。99と指定しておけば事足りるでしょう。 「文献名」には文献の名前を書きます。この書き方に関しては、私もそれほど詳しくな いので、省略します。そして、「参照ラベル」が、今回の2つ目のテーマである 「相互参照」にかかわる機能になります。これは後ほど説明します。
文献の項目数が少なければ上の方法でもかまわないのですが、数が多くなっ てきたときには、この方法は若干面倒です。ここでは、pTeX に元から付いてい るjBiBTeX というソフトを用いて、文献処理を自動化してしまう方法を紹介しま す。
まず、「文献データベースファイル」を、TeX文 書のファイルとは別に作成します。このファイル名をbunsi.bibとしましょう。この新しいファイルに、次に示 すようにどんどん書いてしまうのです。
まずは日本語の文献です。著者名が「ボルティモア、ロディッシュ、ダー ネル ほか」の3人以上(実際は6人)、出版社が「東京化学同人」、訳者が「野田春彦、丸 山工作」の2人(本当は6人)、刊行日が2001年9月10日の『分子細胞生物学 第4 版』と いう本があるとします。その場合、後述する相互参照のために使うラベル名を mcbとすると、次のように書きます。author, title... といったそれぞれの項目 は、順不同でかまいません。思いついたまま書いてください。
@book{mcb,
author = "ボルティモア、ロディッシュ、ダーネル and others",
title = "『分子細胞生物学 第4版』",
publisher = "東京化学同人",
year = "2001年9月10日",
note = "野田春彦、丸山工作 訳" }
行末のコンマを忘れずに書いてください。私はこ れを忘れて失敗したことがあります。
このうち、author(またはeditor), title, publisher, yearの4つは、どの 本でも省略せずに書きます。(他の項目は省略可能。)author ですが、日本人 であれば「丸山 工作」のように書きます。その他の著 者の存在を示す「ほか」は、"and others"と記します。note は本の情報 等を書く項目であり、訳者はここに書いてしまいます。なお、著者名が漢字であ れば、yomi という項目に(できればアルファベッ トで"Kousaku Maruyama"のように)書きます。
次に、欧米の文献です。著者名が"D. Baltimore, H. Lodish, J. E. Darnell"の3人(本当は6人)、出版社が"W. H. Freeman" (これは人名ではなく出版社名です)、刊行日が"2000"の MOLECULAR CELL BIOLOGY, Fourth Editionと いう本があるとします。その場合、後述する相互参照のために使うラベル名を mcbeとすると、次のように書きます。
@book{mcbe,
author = "D. Baltimore, H. Lodish, J. E. Darnell and others",
title = "MOLECULAR CELL BIOLOGY, Fourth Edition",
publisher = "W. H. Freeman",
year = "2000" }
一方、本文(ファイル名をbunken.texとします) には、文献リストを出力したい場所に次のように書いておきます。本文では、文 献を後述する\citeで参照している必要があります。とりあえず本文には、分か らないながらも丸写ししてください。(あるいは、本文(\begin{document}と \bibliographystyle{jplain}の間)に\nocite{*}と書きます。これは「一切文献を\citeで参照し ません」という命令です。)確認しますが、 文献データベースファイル(bibファイル)名は bunsi.bibです。また、文献リストの形式には jplainというものを選びます。これは、一般的に多く使われる文献リストの形式 です。
\documentclass[12pt]{jarticle}
\begin{document}
\textit{Molecular Cell Biology} \cite{mcbe} (日本語訳は『分子
細胞生物学』 \cite{mcb} )は、\textit{Molecular Biology of the Cell} と
並んで、しばしば分子生物学の入門書として読まれる本です。
\bibliographystyle{jplain}
\bibliography{bunsi}
\end{document}
他にもbibファイルがあるときは\bibliography{bunsi,bunsi2}のようにコンマで区切りま す。その上で、次のいずれかの方法で処理します。
次に示すコマンドを 実行します。
platex bunken
jbibtex bunken
platex bunken
platex bunken
jbibtexが文献リストを作るコマンドです。
jbibtex bunken
platex bunken
の組み合わせは、他にも文献リストを読み込んでいるならば、その分だけ回 数を増やします。最後に、後に述べる相互参照のために、もう1度platexコマン ドを実行します。以上で、次の図のような出力が得られます。
ツールバーのボタンを、
、
、
、
の順に押します。
、
の組み合わせは、他にも文献リストを読み込ん
でいるならば、その分だけ押す回
数を増やします。最後に、後に述べる相互参照のために、もう1度
を押します。以上で、出力が得られま
す。
メニューバーの[オプション]→[ツールの設定]よりたとえば次のように登録します。すると、[ツール]→[文献リスト作成]より起動できます。
なお、BibTeX文献データベースファイルの作成および以下に述べる文献の相互参照については、BibTeXをカンタンにする方法---文献管理ソフトRefを用いる方法も合わせてご覧ください。相当楽になります。
たとえば、文献の引用を「○○第2巻によると・・・」と書いていたときに、 文献リストの番号も一緒に示したいときにいちいち文献リストまで戻っていくの は面倒です。また、××の絵のつもりで「図38にあるように」などと書きたいと きに、本当に××の図の番号は38でいいのか、ついでにその図のページも示した い、というときも面倒です。こんなとき、次のように思うことがあるはずです。
参照先の番号やページが変わったら、自動的に参照もとの番号やページの記述 も変わってくれたらなぁ。
そうした願いをかなえるのが「相互参照」です。
まずは、先ほど言いかけた「参照ラベル」についてからです。まず、文献 名を代表するような分かりやすい名前を次のようにつけておきます。
\begin{thebibliography}{99}
\bibitem{HontouniDekirunokanaa} 「できる!化学実験!!」
\end{thebibliography}
そして、本文中で文献番号が欲しいところで、\cite{参照リスト}のように使 います。たとえば、
この実験のマニュアルは、「できる!化学実験!!」\cite{HontouniDekirunokanaa} に従った。
のように使うと、この文献リスト番号は1番なので、
この実験のマニュアルは、「できる!化学実験!!」[1]に従った。
のように出力されます。
tableの表番号、figureの図番号、equationの式番号等をそれぞれ参照したい ときは、\label{目印名} という命令で目印(ラベル)を付けておき、後で\ref {目印名}で表・図・式番号を、\pageref{目印名}で\labelのあるページ数を出力 することが出来ます。たとえば、
\begin{equation} \label{WinnersEQ}
W = A + E + 100M
\end{equation}
と書いたものが、式番号(2)、12ページに出力されたとすると、
クラーウィスの勝利の方程式(式\ref{WinnersEQ} 、\pageref{WinnersEQ} ページ) によると、金(M)は魅力(A)や努力(E)よりもずっと大きな影響を及ぼすという、 驚愕というよりは彼の無知蒙昧の精神に基づく非常に大袈裟な結果になる。無論 Mの力が絶大であることは言うまでもないが、その係数に問題があるのであ り・・・
の出力結果は、
クラーウィスの勝利の方程式(式2、12ページ) によると、金(M)は魅力(A)や努力(E)よりもずっと大きな影響を及ぼすという、 驚愕というよりは彼の無知蒙昧の精神に基づく非常に大袈裟な結果になる。無論 Mの力が絶大であることは言うまでもないが、その係数に問題があるのであ り・・・
となります。
相互参照はたしかに便利な機能ではありますが、「どこがどのラベルか」が 分かりにくくなってしまうのは事実です。そこで、いくつかの工夫をする必要が あります。
まず考えられるのは、ラベル名を覚えやすくすることです。たとえば数式な ら
\label{fig:理想気体の状態方程式}
などと「参照先の種類:」とラベル名の頭につけることで、"fig:"(FIGure,図)だから式の「理想気体の 状態方程式」ではなく、図を参照するんだな、と分かりやすくすることが出来ま す。
ただし、それでも限界があります。その場合はソフトの助けを借りるという 手もあります。
以下の方法に加え、文献の相互参照およびBibTeX文献データベースファイルの作成については、BibTeXをカンタンにする方法---文献管理ソフトRefを用いる方法も合わせてご覧ください。相当楽になります。
おなじみのEasyTeXであれば、
(TeXラベル参照ボタン)や
(文献参照ボタン)がかなり使えます。具体的には、ラベルや文献の一覧を示し、
ラベル名をクリックすると、ラベルの周りにどんな式や図があるのかが分かりま
す。(下図参照)
ラベルの1つをクリックしてOKを押すと、自動的に\label{}や\cite{}がラベ ル名つきで挿入されます。また、[TeXテキスト (T)] -> [ラベル付け (L)]を クリックすると、次にラベルをつけられる部分までジャンプして自動的に \label{eq:} (等式環境まで飛んだとき)などとラベルをつけます。これはお好 みでどうぞ。また、[TeXテキスト (T)] -> [相互参照 (R)] より、ラベルの 種類別に、ラベルを探すことが出来ます。ただし、「種類別」というのは、たと えば「等式ならラベル名が"eq:"となっているもの」として探すので、 おそらく先ほど紹介した「ラベル付け」と一緒に使うことで効果が発揮されるの ではないかと思います。
(初心者用ツールではありませんので、Meadow をインストールしていな いパソコン初心者の方は「索引を作ろう!」まで飛ばしてかまいません・・・。)
Meadow や Emacs では RefTeX という Elisp (Emacs/Meadow 用の、 Emacs Lisp で書かれた拡張 機能)が付属しているかもしれ ません。これは、相互参照をする際に便利な Elisp で、YaTeXやAUCTeXと組み合 わせることも出来ます。機能が豊富で、EasyTeXより快適に感じます。私の. emacsでは次の6行目のように書く事で、YaTeXと同時に起動するminor modeとし て使えています。
(cond
((locate-library "yatex")
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
;; RefTeX 起動
(add-hook 'yatex-mode-hook '(lambda () (reftex-mode t)))
;; 拡張子が .tex のファイルを開くときに yatex-mode にする
(setq auto-mode-alist (cons '("\\.tex$" . yatex-mode) auto-mode-alist))))
これで、YaTeX起動時にreftex-modeもt(起動)になります。
では、\label や \ref を使っている\section付きのTeXファイル(日本語も OK)を開き、C-c = してください。すると、目次が出てくると思います。(別に\tableofcontents がなくとも出てきますので、ご安心ください。)
YaTeX付属のアウトラインよりもずっと整備されていますので、TeXファイル編集 中にアウトラインをのぞいてみるのにも最適です。ここでの操作は、次の通りで す。
カーソルのある節に該当する本文を表示
スペース + 本文へジャンプ
TAB + RefTeX の目次を消す
目次から抜ける
目次をスキャンしなおす。\sectionや\labelの追加があれば読み込み、 削除があれば目次からも削除する。
ラベルを表示する。もう1度押すと表示されなくなる。ちなみにラベルにカーソルを移動してスペースキー を押すと、ラベルまで本文が飛んでくれる。
カーソルを移動するごとに本文も移動するようになる。もう1度押すと 元通り(カーソルを移動しても本文もつられて動かない)になる。
xrというLaTeXパッケージを使って、外部ファイルまで飛ぶらしいが、 よくわからない。
本文中では、次が使えます。
\labelを挿入。EasyTeXの「ラベル付け」と同様で、文脈に応じてミニ バッファか本文に挿入される。(た とえば等式中ならミニバッファに\label{eq:a}と現れて、編集した上で本 文中に挿入できる。)
実行すると参照する\labelの種類を聞かれる。(EasyTeXの「相互参照」 の項目のようなもの。)ただし、\labelがどんな環境中にあるかという形 で「\labelの種類」は決定される。たとえば、スペースキーですべての \labelが参照する\labelの候補となり、fと答えればfigure環境中の \labelの候補が出てくる。候補は、先に述べた目次の中に出てくる形とな り、nで次に進むことで選択できる。操作方法は、目次の項で述べた通り。
参照したい参照文献ラベルを正規表現で検索してくれる
カーソルのある\refから、対応する\labelを検索し、別ウィンドウに 表示してくれる。
まだまだ「知るひとぞ知る」といった感じは否めないかもしれないElispです が、非常に便利ですので、YaTeXやAUCTeXなどと一緒に使ってみてください。
索引があると、読む側としては「用語から検索して該当する部分のみ拾い読 みする」という読み方が出来ますので、非常に便利です。LaTeXでは、\indexと いう、「索引の対象となる用語があるよ」と目印をつける命令がありますので、 それを本文の随所につけておき、本文の最後(\end{document}の直前にでも)に \printindex と記述することで、\printindex とかかれた部分に索引を出力する ことが出来ます。ページ数も自動的につきます。
まず、プリアンブルに次のように記述します。
\usepackage{makeidx}
\makeindex
その上で、索引をつけたい用語が英語なら次のように索引用ラベルを貼ります。
If you want convert DVI file to PDF file, using dvipdfm\index{dvipdfm} is the greatest choice.
こうしたものをどんどん書いておき、\printindex で出力すると、目次の用 語がアルファベット順に並べられるわけです。平仮名の場合はあいうえお順となります。
では、ABCも「あいうえお」もない漢字はどうするでしょうか。この場合は、 次のように@の前に「ふりがな」、@の後に漢字をつけることで対処できます。次の目次用ラベル4連発 で、用法を考えてみてください。
免疫\index{めんえき@免疫} とは、例外をおそれずにいえば、体内に入ってきた細菌やウィルス(非自己\index{ひじこ@非自己} \footnote{抗原\index{こうげん@抗原} と総称される。} )といった自己にとって 危険な要素を徹底的に排除しようと試みる際に、脳以上に主導権を握っている生体防御機構\index{せいたいぼうぎょきこう@生体防御機構} である。
さて、索引を処理するには mendex というツールが必要になります。角藤 版pTeXを「標準インストール」した方なら入っていると思います。
先ほど説明したように\indexと\printindexを書いたTeXファイル名を hoge.texとします。その上で、次のように実行してください。(下の通り、拡 張子は省略できます。・・・というより省略することをお薦めします。)
platex hoge
mendex hoge
platex hoge
platex はmendex の前後で、2回実行することになります。以上で索引が生成 されたはずです。
EasyTeXの場合は、次のとおりにメニューバーの[オプション]→[ツールの設定]から登録しておけば、[ツール]→[索引作成]より起動することが出来ます。
WinShellの場合は、自分でボタンを作る必要があります。詳しくは 「TeX をカンタンにする方法(設定編)」の中の、ここ を見てください。User Defined の設定は、下図の通りに行えばよいでしょ う。(Name はお好みで名づけてください。User Tools はまねしなくて良 いです。)