---
title: "intro"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{intro}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
knitcitations
=============
- **Author**: [Carl Boettiger](https://www.carlboettiger.info/)
- **License**: [MIT](https://opensource.org/licenses/MIT)
- [Package source code on Github](https://github.com/cboettig/knitcitations)
- [**Submit Bugs and feature requests**](https://github.com/cboettig/knitcitations/issues)
`knitcitations` is an R package designed to add dynamic citations to dynamic documents created with [Yihui's knitr package](https://github.com/yihui/knitr).
Installation
------------
Install the development version directly from Github
```r
library(devtools)
install_github("cboettig/knitcitations")
```
Or install the current release from your CRAN mirror with `install.packages("knitcitations")`.
Quick start: rmarkdown (pandoc) mode
------------------------------------
Start by loading the library. It is usually good to also clear the bibliographic environment after loading the library, in case any citations are already stored there:
```r
library("knitcitations")
cleanbib()
```
Set pandoc as the default format:
```r
options("citation_format" = "pandoc")
```
(Note: The old method will eventually be depricated. For documents using `knitcitations <= 0.5` it will become necessary to set this as `"compatibility"`).
### Cite by DOI
Cite an article by DOI and the full citation information is gathered automatically. By default this now generates a citation in pandoc-flavored-markdown format. We use the inline command `citep("10.1890/11-0011.1")` to create this citation [@Abrams_2012].
An in-text citation is generated with `citet`, such as `citet("10.1098/rspb.2013.1372")` creating the citation to @Boettiger_2013.
### Cite by URL
Not all the literature we may wish to cite includes DOIs, such as [arXiv](https://arxiv.org) preprints, Wikipedia pages, or other academic blogs. Even when a DOI is present it is not always trivial to locate. With version 0.4-0, `knitcitations` can produce citations given any URL using the [Greycite API](http://greycite.knowledgeblog.org). For instance, we can use the call `citep("https://knowledgeblog.org/greycite")` to generate the citation to the Greycite tool:
```r
citep("https://knowledgeblog.org/greycite")
```
```
## No encoding supplied: defaulting to UTF-8.
```
```
## [1] "[@greycite32194]"
```
### Cite bibtex and bibentry objects directly
We can also use `bibentry` objects such as R provides for citing packages (using R's `citation()` function): `citep(citation("knitr")` produces [@Xie_2020; @Xie_2015; @Xie_2014]. Note that this package includes citations to three objects, and pandoc correctly avoids duplicating the author names. In pandoc mode, we can still use traditional pandoc-markdown citations like `@Boettiger_2013` which will render as @Boettiger_2013 without any R code, provided the citation is already in the `.bib` file we name (see below).
### Re-using Keys
When the citation is called, a key in the format `FirstAuthorsLastName_Year` is automatically created for this citation, so we can now continue to cite this article without remembering the DOI, using the command `citep("Abrams_2012")` creates the citation [@Abrams_2012] without mistaking it for a new article.
### Displaying the final bibliography
At the end of the document, include a chunk containing the command:
```r
write.bibtex(file="references.bib")
```
Use the chunk options `echo=FALSE` and `message=FALSE` to hide the chunk command and output.
This creates a Bibtex file with the name given. [Pandoc](https://johnmacfarlane.net/pandoc) can then be used to compile the markdown into HTML, MS Word, LaTeX, PDF, or many other formats, each with the desired journal styling. Pandoc is now integrated with [RStudio](https://rstudio.com) through the [rmarkdown](https://rmarkdown.rstudio.com/) package. Pandoc appends these references to the end of the markdown document automatically. In this example, we have added a yaml header to our Rmd file which indicates the name of the bib file being used, and the optional link to a [CSL](https://github.com/citation-style-language/styles) stylesheet which formats the output for the ESA journals:
```yaml
---
bibliography: "references.bib"
csl: "ecology.csl"
output:
html_document
---
```
# Example file for RStudio / rmarkdown
This vignette itself is written as an `.Rmd` file with the `yaml` header discussed above for working with RStudio's `knit` buttons or the rmarkdown R package. You can see the [tutorial source file here](https://raw.githubusercontent.com/cboettig/knitcitations/master/vignettes/intro.Rmd). Calling `rmarkdown::render("tutorial.Rmd")` from R on the tutorial compiles the output markdown, with references in the format of the ESA journals.
# References