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

これはjpaRmdパッケージの中に含まれる，引用文献作成関数jpa_citeの解説記事です。
[jpaRmdパッケージはこちら](https://github.com/ykunisato/jpaRmd)，その[利用ガイドスライドはこちら](https://ykunisato.github.io/jpa2020-tws-kunisato/09.html#1)を参照してください。

また，[2021年の心理学会TWS情報](https://ykunisato.github.io/jpa2021-tws-jpaRmd/index.html)も参考にしてください。このなかのセクション[jpaRmdでらくらく文献処理](https://ykunisato.github.io/jpa2021-tws-jpaRmd/08.html)に解説スライドがあり，こちらの方がやや親切な解説になっています。

## はじめに

引用文献の管理には，ZoteroやMendeley, Endnoteなど外部アプリケーションを使っている方も少なくないでしょう。
これらを利用すると，論文の最後に自動的に引用文献リストが作られるというメリットがあります。手作業で行うと過不足がでがちな引用文献リストも，自動でできると大変便利です。
この引用文献の書式というのは，業界や雑誌によって細かいところに違いがありますが，それらは徐々にCSL(Citation Style Language)という形でまとめられて行っています(Citation Style Languageの[まとめサイトはこちら](https://citationstyles.org/))。
先ほど挙げた外部アプリケーションでもこれらのスタイルを読み込んで利用できますので，投稿先が変わっても，あてがう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, Othersのいずれかしか対応していません。
+ Bookは書籍です。著者名，タイトル，出版社，出版社の所在地などの項目からなります。
+ Articleは論文です。著者名，タイトル，雑誌名，巻・号，ページ数，出版社，DOIなどの項目からなります。
+ inCollectionは本の一部を参照する時に使います。書籍の情報に加え，それが含まれている本の著者・編集者名，本のタイトル，どこの章・ページなのか，といった情報が含まれます。
+ inProceedingsは学会発表論文を参照する時に使います。
+ othersはその他なんでもありです。著者名，タイトル，出版年，その他の情報の4つしかセクションがありません。その他のところに書いたものがそのまま出力されますので，Webサイトの引用や修士論文など未発表論文の引用などはすべてこちらで対応します。

Bib形式で引用ファイルをダウンロードしたりすると，これ以外の形式になっていることがあります(miscなど)が，jpa_citeではエラーになりますので，この中のどれかに整えてください。
最後のothersカテゴリはほぼ万能ですので，そこに列記していただけると対応できると思います。
どうしても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},
```

### OTHERSカテゴリの使い方(2022.02.12追記)

+ このカテゴリはjpa_citeオリジナルで，TITLE，AUTHOR,YEAR,INFOの4つの情報のみ指定できます。
+ AUTHOR(YEAR)TITLE, INFO.の順で出力されますので，INFOのところに出力したい情報を自由記述してください。そのままTeXに引き渡されます。

例1;WebCiteの引用

```
@others{WebCite,
  title = "Quick Links: APA Style",
  year = "2014",
  author = "{{American Psychological Association}}",
  info = "American Psychological Association. Retrived from http://www.apa.org/learn/index.aspx(Decenber 3,2014)"
}
```

例2;未発表論文の引用

タイトルをイタリックにしたい，というときはTeXコマンドの`\textit`を使います。TeXでは中括弧で括られた中身，`\textit{HogeHoge}`が*HogeHoge*と出力されるのですが，jpa_citeでは中括弧が1組削除されますので(bibtexではレコードの区切りが中括弧でもダブルクォーテーションでも良いことになっています)，二つ重ねて使います。

```
@others{Li,
  title = "\textit{{Feature-based versus space-based access to internal representations in visual working memory}}",
  year ={2011},
  author = {Li, Nanigash},
  info = {(Unpublished master's thesis). Kyot University, Kyoto.}
}
```

例3；新聞記事の引用

```
@Others{NewsPaper,
  title = "Kids learn about life by raising animals at school",
  year = "2015",
  Author = "Uematsu, Nanigashi",
  info = "Japan News, March 13,16"
}
```


## 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はRmarkdownで心理学系論文を書くためのパッケージで，専修大学の国里愛彦先生が開発されているものです。このパッケージを使ってRmarkdownのテンプレートを選ぶと，YMALに次のように記載されたファイルが開きます。

```
---
title: "RMarkdownで『心理学研究』の論文は書けるのか？"
subtitle: "Can we write a paper of the Japanses Journal of psychology with RMarkdown?"
suppress-bibliography: yes
output:
  jpaRmd::render_jjp:
    Rmd_file: Untitled.Rmd
    Bib_file: reference.bib
---
```

ここのtitle,subtitleはもちろん変更してください。また6，7行目にRmdファイルとBibファイルを指定するようになっています。Rmdファイルは開いているこのファイル名を，Bibファイルはこのページで紹介されている形式で作られたBibファイルを指定します。
あとはRmdの書式に従って，論文を書いていくだけです。

テンプレートの194--201行目あたりに，次のような記載がありますが，ここで引用文献を取り込んでいます。

```
# 引用文献
\noindent
\begingroup
\setlength{\parindent}{-0.3in}
\setlength{\leftskip}{0.2in}
\setlength{\parskip}{8pt}

<insert_reference>
```

この<insert_reference>の文字列のところに，jpa_cite関数が書式に合わせたTeXファイルを流し込みますので，この辺りは触らないようにしてください。

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