Help us understand the problem. What is going on with this article?

jpa_citeに合ったBibファイルの作り方

これはjpaRmdパッケージの中に含まれる,引用文献作成関数jpa_citeの解説記事です。
jpaRmdパッケージはこちら,その利用ガイドスライドはこちらを参照してください。

はじめに

引用文献の管理には,ZoteroやMendeley, Endnoteなど外部アプリケーションを使っている方も少なくないでしょう。
これらを利用すると,論文の最後に自動的に引用文献リストが作られるというメリットがあります。手作業で行うと過不足がでがちな引用文献リストも,自動でできると大変便利です。
この引用文献の書式というのは,業界や雑誌によって細かいところに違いがありますが,それらは徐々にCSL(Citation Style Language)という形でまとめられて行っています(Citation Style Languageのまとめサイトはこちら)。
先ほど挙げた外部アプリケーションでもこれらのスタイルを読み込んで利用できますので,投稿先が変わっても,あてがうCSLを変えるだけで書式変更も自動に行われます。便利ですね。

もうひとつ。論文を作成する際に,TeXやRmdを使っている人もいるでしょう。
Rmdは統計環境Rのマークダウン書式であり,最終的にはTeX 形式に変換されてPDF を作ることが可能です。統計環境と融合させておくことで,再現性の高い論文執筆ができるという利点があります。
TeXは数式表現が得意な版組みソフトであり,書式を細かく設定して美しい文書を作ることができるのが利点です。
このTeXには引用文献を(相互参照などを調整しながら) 作成できるBibtex という補助機能があり,こちらも各書式に対応したスタイルファイル(拡張子.styのファイル)を読み込むことでたくさんの書式に対応できます。
また,Bibtexのユーザはとても多いので,例えばGoogle Scholarなどで論文を検索した際に,その書誌情報をBibファイル形式で出力するといったこともできます。引用文献リストを作るのがとても簡単になっているんですね。

前置きが長くなりました。

さて,日本心理学会(Japanese Psychological Associaton, JPA)では,その「執筆投稿の手引き」において,APA準拠の論文執筆書式を規定しています。その中には文献の引用書式も細かく決められています。そのほとんどはAPAに準拠していますので,CSLファイルやstyファイルもAPAスタイルのそれをあてがうことで,多くの執筆環境に対応することができます。
ところが日本の雑誌ですので,日本の文献独特のルールがいくつか含まれています。これについてはCSLやstyファイルがないのが現状です(JPA用のstyleファイルは私が作ったものがあるにはあるのですが)。

そこで,R上で動くJPAスタイルに合わせる関数を作りました。それがjpa_cite()です。現段階ではRmd ファイルの中で利用されることを前提にしています。やっていることはファイルの中身を見て,書式の整ったTeXファイルを出力するというものです。
RmdファイルからPDFを出力する時に,この関数で生み出された TeXファイルを読み込むようにすることで,書式の整った引用文献リストつきの論文が書けるということになります。

ここではこの関数を説明するとともに,日本語文献を引用するのに必要なBibファイルの操作の仕方について解説します。

jpa_citeに合ったBibファイルのルール

BibファイルはASCIIファイルですので,テキストエディタで開いて加工することができます。中身は次のようになっています。

@article{ekman1965,
    Author = {Ekman, Paul},
    Title = {Differential communication of affect by head and body cues},
    Year = {1965}
    Journal = {Journal of Personality and Social Psychology},
    Volume = {2},
    Pages = {726--735},
    Publisher = {American Psychological Association},
}

まず@でその文献がどういう種類(カテゴリー)のものであるかを決めています。そのあとは基本的に{}で囲って,それぞれの情報を記載していきます。各情報項目の入力はカンマで区切るようになっています。
この例では,著者名 (Author) ,論文タイトル(Title),公開年(Year),雑誌名(Journal),巻・号(Number, Volume),ページ数(Pages),出版社(Publisher)が情報項目です。これらの項目の並び順に規定はなく,またこのほかに項目を追加しても構いません。CSL/styファイルが対応していればそうした追加項目も適切に処理されますし,対応していなければそれらの情報は無視されます。

ところで,最初にあるekman1965というのは,書いてある文献から呼び出されるキーになっています。例えばtexの場合は\cite{ekman1965}といった関数で,Rmd の場合は@ekman1965といった形で呼び出すことで,本文中のその場所に文献情報が挿入されるという仕組みです。本文中で引用された文献データだけが最後の引用文献リストに挙がるようになっており,リストの過不足問題を回避でき,また自分なりのBibファイルを完成させておけば,論文ごとにそれを作る必要もないということになります。

それでは以下,各項目の特徴とjpa_cite関数の対応について説明していきましょう。

jpa_cite関数で使うbibファイルの基本的なルール

  • bib ファイルの文字コードはUTF-8にしてください。Shfi-JISは勘弁してください。
  • bib ファイルの各アイテムは{}で囲むと言いましたが,""で囲っていても問題ありません。
  • bib ファイルの中で%で始まるところはコメントアウト行になります。必要であれば,何かコメントを付与しておいてください。
  • 各アイテムは大文字と小文字が混在していても構いません。AuthorもAUTHORもAUthorも同じとみなされます。jpa_cite関数の中では,これらを全て大文字に変換するような加工をしますので。
  • &マークで区切りたいときは,\&としてください(バックスラッシュをつける)。&だけだとTeXは特別な動きをしてしまいます。

カテゴリー

  • bibtexのカテゴリーはたくさんありますが,jpa_citeはBook,Article,inCollection,InProceedingsのいずれかしか対応していません。
  • Bookは書籍です。著者名,タイトル,出版社,出版社の所在地などの項目からなります。
  • Articleは論文です。著者名,タイトル,雑誌名,巻・号,ページ数,出版社,DOIなどの項目からなります。
  • inCollectionは本の一部を参照する時に使います。書籍の情報に加え,それが含まれている本の著者・編集者名,本のタイトル,どこの章・ページなのか,といった情報が含まれます。
  • inProceedingsは学会発表論文を参照する時に使います。

ほかにも文献の種類はあり得ますが,あまり細分化すると非常に限定的な関数になってしまいますので,他の分類がしたい時でもできればこの4つのどこかに当てはめて使っていただければと思います。
一応,日本心理学会編「執筆投稿の手引き」にある「見本3.7 引用文献例」にある情報は,この4つの分類で対応できています。
どうしてもbibファイルの方に他の分類が必要だということであれば,作者までご連絡ください。対応を考えます。

著者名; AUTHOR

  • 著者名は姓と名をカンマで区切ってください。
  • 複数の著者がある場合は and で区切ってください。&マークは使わないでください。
  • 外国人名はhumaniformattパッケージによる名前の分類関数を利用しています。

Author = {Ekman, Paul and Davidson, Richard J and Friesen, Wallace V},

日本の著者の場合

  • 日本の著者の場合,その読み方をYOMIとして入力してください。機会は日本語文字の読み方まではわからないので,この情報がないと「日本語名をアルファベットに変換して並べ替える」というJPAルールに従うことができなくなります。

author={三浦,麻子 and 小森,政嗣 and 松村,真宏 and 前田,和甫},
yomi = {MIura,asako,Komori,Masatugu,Matsumura,Masahiro,Maeda Kazuura},

編集者; Editor / 日本語版著者;JAuthor / 日本語への監訳; JKanyaku / 翻訳者; TRANSAUTHOR

  • inCollection などで編集者を入力したい場合,あるいは翻訳者,日本版著者(一人の翻訳者),訳本の監修者などはこれらの項目で入力してください。
  • これらも人名として扱いますので,著者名同様,姓と名の 間をカンマで区切り,複数人の場合はandでつなげる,というようにしてください。

Jkanyaku = {濱,治世 and 松山,義則},

英語の書籍情報の出力

  • 英語の書籍は,基本的に著者名,出版年,タイトル,版(あれば),所在地,出版社の順で出力します。
  • ドイツ語やフランス語などの書籍が英語に翻訳された場合,英語への翻訳者,編集情報その他を追記します。これらの情報を入れる項目は,TRANSRATOR, TRANSWORK,TRANSINFOです。

@book{Duchenne,
    author={Duchenne, Guillaume-Benjamin and de Boulogne, G-B Duchenne},
    year = {1990},
    title = {The mechanism of human facial expression},
    Address = {Cambridge},
    Publisher = {Cambridge University Press},
    TransAuthor = {Cuthbertson,R.A.},
    TransWork = {Ed. \& Trans.},
    TransInfo = {Original work published 1862}
}

日本語の書籍情報の出力

  • 和書の場合は,基本的に著者名,出版年,タイトル,出版社名を出力します。
  • 翻訳書の場合は,原著のタイトル,著者名,出版年をTITLE,AUTHOR,YEARに入れておき,日本でのタイトル,出版年,日本での出版社はJTITLE, JAUTHOR, JPUBLISHERに入れます。JTITLEに何か文字が入っていると「これは翻訳書だな」と判断されます。
  • JPAでは現著者のカナ表記も必要です。これはGENCHOKANAに入力します。

@book{Blechman1990,
    Author = {Blechman,E A},
    Title = {Emotions and family: For better or for worse},
    Year = {1990}
    Address = {New York},
    Publisher = {Lawrence Erlbaum Associates},}
    genchoKANA ={ブレックマン,E. A. },
    Jkanyaku = {濱,治世 and 松山,義則},
    Jpublisher = {北大路書房},
    Jtitle = {家族の感情心理学−そのよいときも,わるいときも−},
    Jyear = {1998},

jpa_citeのうごき

jpa_cite関数は,

  1. まずBibファイルのレコードを取り出してデータフレーム型にします。
  2. 次にAuthor,Editor,JAuthor,JKanyaku,Transratorに入っているものを「人名」として処理します。ここではhumaniformatパッケージを使って,姓,ミドルネーム,名,それらのアルファベット表記などに書き分けて行きます。
  3. AUTHOR,TITLE,JTITLE,JOURNALのどこかに日本語文字列があれば日本文献として,なければ英語文献として扱います。langFLGというのがTRUEであれば英語,FALSEであれば日本語と考えます。
  4. そのあとは,言語と分類のくみわせで,それぞれの関数で出力を整えます。
  5. 引用キーをunicodeにしたlabelをつけて,texファイルとして出力します。

jpaRmdからjpa_citeを呼び出す

jap_citeは,基本的にjpaRmdパッケージの一部として開発されています。

jpaRmdはRmdファイルで日本語心理学文献を作成するパッケージで,インストールするだけで研究プロジェクトを管理し,論文執筆を一つの環境の中で完成させるシステムです。ここで作っているRmdファイルの中で,Rチャンクの中に

library(jpaRmd)
jpa_cite("Hogehoge.Rmd","fuga,bib")

としてjpa_cite関数を呼び出します。ここでHogehoge.Rmdはそこで書いているRmdファイルです。fuga.bibはそこで引用に使っているbibファイルです。これでチャンクの実行時に,fuga.texを作ります。ここで作られる引用文献リストのtexファイルは,bibファイルと同じで拡張子が違うだけになっています。コンパイル時に出来上がるのはHogehoge.pdfですが,中間ファイルとしてHogehoge.texが作られていますので,本文ファイル名とbibファイル名を同じにする,つまりhoge.Rmd,hoge.bibとするとエラーになりますので注意してください。

あとはこのfuga.texを本文のどこかで

## 引用文献
\input{fuga}

としてやると,そこに引用文献リストが入り込みます(このとき拡張子は不要です)。

以上が簡単なマニュアルでした。
不具合等ありましたら,作者までご連絡ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away