4.6 R パッケージの引用を生成する

R パッケージを引用するには, base R の citation() を使うことができます. BibTeX 用の引用エントリを生成したいなら, citation() の返り値を toBibtex() を与えることができます. 例えばこうです.

toBibtex(citation("xaringan"))
@Manual{,
  title = {xaringan: Presentation Ninja},
  author = {Yihui Xie},
  year = {2021},
  note = {R package version 0.22},
  url = {https://CRAN.R-project.org/package=xaringan},
}

toBibtex() で生成されたエントリを使うには, 出力を .bib ファイルにコピーし, 引用キーを追加しなければなりません (例えば @Manual{, の部分を @Manual{R-xaringan, と書き換える). これは knitr::write_bib() 関数によって自動化できます. この関数は引用エントリを生成し, 自動的にキーを加えてファイルに書き込みます. 例えばこのようにします.

knitr::write_bib(c(.packages(), "bookdown"), "packages.bib")

第1引数はパッケージ名の文字列ベクトルで, 第2引数は .bib ファイルのパスであるべきです. 上記の例では, .packages() は現在の R セッションが読み込んでいる全てのパッケージ名を返します. これらのパッケージのいずれかが更新された (例えば著者, タイトル, 年, あるいはバージョンが変更された) とき, write_bib() は自動的に .bib を更新できます.

引用エントリには2つのタイプが選択肢としてあります. 1つはパッケージの DESCRIPTION ファイルをもとに生成したもので, もう1つは, もしパッケージに CITATION ファイルが存在するなら, そこから生成したものです. 前者のタイプは引用キーが R-(パッケージ名) という形式 (例えば R-knitr) になり, 後者のタイプはパッケージ名と公開年を結合したもの (例: knitr2015) がキーとなります . 同じ年に複数のエントリがあるときは, 接尾文字が追加されます. 例えば knitr2015aknitr2015b のように. 前者のタイプはしばしばパッケージ自体を引用 (つまり, ソフトウェアとして) するのに使われますが, 後者のタイプは論文や書籍のようなパッケージと関連する出版物といったものが多いです.

knitr::write_bib(c("knitr", "rmarkdown"), width = 60)
@Manual{R-knitr,
  title = {knitr: A General-Purpose Package for Dynamic
    Report Generation in R},
  author = {Yihui Xie},
  year = {2021},
  note = {R package version 1.36},
  url = {https://yihui.org/knitr/},
}

@Manual{R-rmarkdown,
  title = {rmarkdown: Dynamic Documents for R},
  author = {JJ Allaire and Yihui Xie and Jonathan McPherson
    and Javier Luraschi and Kevin Ushey and Aron Atkins
    and Hadley Wickham and Joe Cheng and Winston Chang and
    Richard Iannone},
  year = {2021},
  note = {R package version 2.11},
  url = {https://CRAN.R-project.org/package=rmarkdown},
}

@Book{knitr2015,
  title = {Dynamic Documents with {R} and knitr},
  author = {Yihui Xie},
  publisher = {Chapman and Hall/CRC},
  address = {Boca Raton, Florida},
  year = {2015},
  edition = {2nd},
  note = {ISBN 978-1498716963},
  url = {https://yihui.org/knitr/},
}

@InCollection{knitr2014,
  booktitle = {Implementing Reproducible Computational
    Research},
  editor = {Victoria Stodden and Friedrich Leisch and Roger
    D. Peng},
  title = {knitr: A Comprehensive Tool for Reproducible
    Research in {R}},
  author = {Yihui Xie},
  publisher = {Chapman and Hall/CRC},
  year = {2014},
  note = {ISBN 978-1466561595},
  url = {http://www.crcpress.com/product/isbn/
    9781466561595},
}

@Book{rmarkdown2018,
  title = {R Markdown: The Definitive Guide},
  author = {Yihui Xie and J.J. Allaire and Garrett
    Grolemund},
  publisher = {Chapman and Hall/CRC},
  address = {Boca Raton, Florida},
  year = {2018},
  note = {ISBN 9781138359338},
  url = {https://bookdown.org/yihui/rmarkdown},
}

@Book{rmarkdown2020,
  title = {R Markdown Cookbook},
  author = {Yihui Xie and Christophe Dervieux and Emily
    Riederer},
  publisher = {Chapman and Hall/CRC},
  address = {Boca Raton, Florida},
  year = {2020},
  note = {ISBN 9780367563837},
  url = {https://bookdown.org/yihui/rmarkdown-cookbook},
}

ファイルパスの引数がないと, knitr::write_bib() は上記の例のように引用エントリをコンソールに出力します.

write_bib() は既存の文献目録ファイルを上書きするように設計されていることに注意してください. 文献目録に手動で他のエントリを追加したい場合, 2つ目の .bib ファイルを作成して, この例のように bibliography フィールドで参照してください.

---
bibliography: [packages.bib, references.bib]
---

```{r, include=FALSE}
knitr::write_bib(file = 'packages.bib')
```

上記の例では packages.bib は自動で生成されたものなので, 手動で変更すべきではありません. それ以外の全ての引用エントリは references.bib に手動で書き込むことができます.

ここまでは R パッケージの引用を生成する方法を1つだけ紹介しています. それ以外のタイプの文献で動的に引用を生成するには, knitcitations パッケージ (Boettiger 2021) を見てください.

参考文献

Boettiger, Carl. 2021. Knitcitations: Citations for Knitr Markdown Files. https://github.com/cboettig/knitcitations.