Functions and an 'RStudio' add-in that search 'Bib(La)TeX'-files or 'Zotero' libraries (via the 'Better BibTeX' plugin) to insert formatted Markdown citations into the current document.
citr provides functions and an RStudio
addin to search a BibTeX-file
to create and insert formatted Markdown citations into the current
You can either use the stable version of
citr from CRAN,
or the current development snapshot from this GitHub repository:
citr is installed and you have restarted your R session, the
addin appears in the menus. Alternatively, you can define a keyboard
call the addin.
The addin will automatically look up the bibliography files specified in
the YAML front matter. If the document does not contain a YAML front
matter the addin will attempt to locate a parent document and look up
the bibliography file specified therein. That is, the addin works its
automagic even if you edit R Markdown documents that are included as
children in another R Markdown
document. The expected names of a parent document default to
c("index.Rmd", "master.Rmd"), it thus works with
bookdown out of the box, but can be
options(citr.parent_documents = "my_parent.Rmd")).
The following call searches a bibliography file and creates formatted Markdown citations for the results.
library("citr")md_cite("foo 2016", bib_file = "references.bib")
md_cite() searches the author, year, title, and journal fields of your
If you are using Zotero
citr can access your reference database
directly. For this to work, you need to install the Better Bib(La)TeX
Once the extension is installed and your reference manager is running,
citr can access all your references and keep your bibliography file
updated by adding missing references.
When you are done writing, your bibliography file is likely to contain
some unneeded references, which you added while writing but removed
tidy_bib_file() removes unneeded (or duplicate)
entries from your bibliography file.
tidy_bib_file(rmd_file = "report.Rmd", messy_bibliography = "references.bib", file = "tidy_references.bib")
citr relies on
RefManager::ReadBib() and, thus, indirectly on
bibtex::read.bib() to load bibliographies. I have noticed that very
long Bib(La)TeX fields can cause these underlying functions to fail
Error in do_read_bib(file, encoding = .Encoding, srcfile): lex fatal error: input buffer overflow, can't enlarge buffer because scanner uses REJECT). To avoid such problems, I strongly recommend to disable
the export of potentially long metadata fields, such as abstract and
notes. The Better Bib(La)TeX-plugin allows users to specify fields to
Once, the above error has occurred, it may be necessary to restart the R
session. Otherwise reading any other file may fail with
Error: lex fatal error: fatal flex scanner internal error--end of buffer missed.
tidy_bib_file()removes duplicate and unneeded entries from a Bib(La)Tex-file.
encodingoption to functions that read Bib(La)TeX-files and a corresponding global option. (reported by @sammo3182 #11)
insert_citation()are printed to the dialog instead of the console (reported by @sammo3182 #11)