As in this question, I would like to include citations to articles in function documentation. I use roxygen2 for all documentation, and it appears that there was a pull request to roxygen2 with the necessary functionality, but Hadley turned it down since roxygen2 was in maintenance mode. Have things changed since then? Is there another way to cite/ include article references stored in BibTeX format?
- 1
- 1
- 10,736
- 12
- 72
- 116
-
Try to put a "CITATION" file under inst folder of your package? For example, https://github.com/cran/GMD/blob/master/inst/CITATION – xb. Jan 28 '15 at 14:10
-
1@xb No, that is the citation for the package, not to cite external articles. – tchakravarty Jan 28 '15 at 14:12
-
Then try to include a .bib file in your .Rnw if you use such type of vignette? For example, `\bibliographystyle{plain} \bibliography{vignette.bib}` – xb. Jan 28 '15 at 14:18
-
@xb Thanks, but again, that is a different use case. I want to be able to use something like the proposed `@cite` tag from the pull request to cite articles as I write inline `roxygen2` function documentation. I am aware that `RMarkdown` allows external bibliographies. – tchakravarty Jan 28 '15 at 14:20
2 Answers
The Rdpack package promises to deliver the functionality that you requested.
To get set up, you also need to add the line RdMacros: Rdpack to your package's DESCRIPTION file (note the capital M), and add Rdpack to the Imports: field.
Then you can save your bibtex library in to inst/REFERENCES.bib, and cite them in your documentation with:
#' @references{
#' \insertRef{bibtexKey}{YourPackageName}
#' }
#'
#' # The below line ought to be included in at least one of your documentation
#' # sections, so that roxygen2 adds Rdpack to your NAMESPACE file.
#'
#' @importFrom Rdpack reprompt
I initially encountered some errors when first using the package; re-starting R seemed to do the trick.
Warnings about unknown macro '\insertRef' will be encountered if building documentation with devtools::document(), as devtools does not read the 'RdMacros' line of the DESCRIPTION file; they can be safely ignored. The references may not be rendered correctly by devtools, but will be when the package is finally built; to view them in their proper formatting in the interim you can run R CMD Rd2pdf from a separate command window.
- 3,687
- 1
- 24
- 51
Nicely summarized by ms609. I would add that the releases of Rdpack in 2018 provided also macros for citation and the ability to produce the bibliography with a single command insertAllCited{}. Vignette Inserting_bibtex_references, linked also by ms609, provides up-to-date information.
Rdpack::viewRd() can be used to view the rendered citations without building the package, something like:
Rdpack::viewRd("./man/filename.Rd") # text
Rdpack::viewRd("./man/filename.Rd", type = "html") # html
This may be particularly useful for roxygen2 users since roxygen2 processes the Rd files but doesn't render the references. Just don't forget to update the documentation using devtools::document() or another suitable command before invoking Rdpack::viewRd().
- 136
- 1
- 3
-
Note that you cannot put four spaces or more before \insertAllCited{}! – Denis Cousineau Apr 01 '21 at 19:56
-
Indeed, but only if you have activated markdown for your roxygen2 comments. Note that the example by @mc609 above can be used safely, the trouble occurs only if you have activated markdown and aligned `\insertRef` with the second e of @references. – Georgi Boshnakov Apr 02 '21 at 22:22