这是我解决问题的方法。我使用RStudio编程。奇怪的是,对于日期和csl字段,我不得不使用一种解决方案,而对于参考文献字段则需要另一种解决方案。!expr在日期或csl行中无效(对我而言)。在参考文献行中,带引号的r代码也无效(对我而言)。我将参考文献和csl文件存储在一个包(inst/docs文件夹)中。不属于该包的rmarkdown文件会使用这些文件。
---
title: "Title"
date: '`r format(Sys.time(), "%d %B, %Y")`'
output: html_document
bibliography: !expr system.file("docs", "my.bib", package = "MyPackage")
csl: '`r system.file("docs", "my.csl", package = "MyPackage")`'
---
Yada yada [@MyRef04].
my.bib是带有MyRef04的BibTex文件。csl是样式文件。
这种情况下,一个人维护一个包,其中包含数据、代码、参考文献等。其他人可能不知道包的作者,从GitHub安装该包并编写或运行使用该包的rmarkdown文件。用户几乎肯定不使用Git或GitHub,我不希望他们在从GitHub安装包后再下载任何额外的文件。
更新:在发布上述内容后,我碰巧安装了来自GitHub的markdown,因为我需要开发版本中的某些内容。在GitHub上的rmarkdown版本'1.7.5'中,您可以在参考文献行中使用r代码:
---
title: "Title"
date: '`r format(Sys.time(), "%d %B, %Y")`'
output: html_document
bibliography: '`r system.file("docs", "my.bib", package = "MyPackage")`'
csl: '`r system.file("docs", "my.csl", package = "MyPackage")`'
---
从GitHub安装rmarkdown
library(devtools)
install_github("rstudio/rmarkdown")