2.8 Citations
Although Pandoc supports multiple ways of writing citations, we recommend you to use BibTeX databases because they work best with LaTeX/PDF output. Pandoc can process other types of bibliography databases with the utility pandoc-citeproc
(https://github.com/jgm/pandoc-citeproc), but it may not render certain bibliography items correctly (especially in case of multiple authors per item), and BibTeX can do a better job when the output format is LaTeX. With BibTeX databases, you will be able to define the bibliography style if it is required by a certain publisher or journal.
A BibTeX database is a plain-text file (with the conventional filename extension .bib
) that consists of bibliography entries like this:
@Manual{R-base,
title = {R: A Language and Environment for Statistical
Computing},
author = {{R Core Team}},
organization = {R Foundation for Statistical Computing},
address = {Vienna, Austria},
year = {2016},
url = {https://www.R-project.org/},
}
A bibliography entry starts with @type{
, where type
may be article
, book
, manual
, and so on.7 Then there is a citation key, like R-base
in the above example. To cite an entry, use @key
or [@key]
(the latter puts the citation in braces), e.g., @R-base
is rendered as R Core Team (2018), and [@R-base]
generates “(R Core Team 2018)”. If you are familiar with the natbib package in LaTeX, @key
is basically \citet{key}
, and [@key]
is equivalent to \citep{key}
.
There are a number of fields in a bibliography entry, such as title
, author
, and year
, etc. You may see https://en.wikipedia.org/wiki/BibTeX for possible types of entries and fields in BibTeX.
There is a helper function write_bib()
in knitr to generate BibTeX entries automatically for R packages. Note that it only generates one BibTeX entry for the package itself at the moment, whereas a package may contain multiple entries in the CITATION
file, and some entries are about the publications related to the package. These entries are ignored by write_bib()
.
# the second argument can be a .bib file
knitr::write_bib(c("knitr", "stringr"), "", width = 60)
@Manual{R-knitr,
title = {knitr: A General-Purpose Package for Dynamic Report
Generation in R},
author = {Yihui Xie},
year = {2018},
note = {R package version 1.20.22},
url = {https://yihui.name/knitr/},
}
@Manual{R-stringr,
title = {stringr: Simple, Consistent Wrappers for Common
String Operations},
author = {Hadley Wickham},
year = {2018},
note = {R package version 1.3.1},
url = {https://CRAN.R-project.org/package=stringr},
}
Once you have one or multiple .bib
files, you may use the field bibliography
in the YAML metadata of your first R Markdown document (which is typically index.Rmd
), and you can also specify the bibliography style via biblio-style
(this only applies to PDF output), e.g.,
---
bibliography: ["one.bib", "another.bib", "yet-another.bib"]
biblio-style: "apalike"
link-citations: true
---
The field link-citations
can be used to add internal links from the citation text of the author-year style to the bibliography entry in the HTML output.
When the output format is LaTeX, citations will be automatically put in a chapter or section. For non-LaTeX output, you can add an empty chapter as the last chapter of your book. For example, if your last chapter is the Rmd file 06-references.Rmd
, its content can be an inline R expression:
`r if (knitr::is_html_output()) '# References {-}'`
References
R Core Team. 2018. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
The type name is case-insensitive, so it does not matter if it is
manual
,Manual
, orMANUAL
.↩