通过servr在Jekyll博客中启用rmarkdown / pandoc-citeproc引用

时间:2015-08-19 15:52:09

标签: r jekyll knitr r-markdown pandoc

我将我的rmarkdown - Jekyll-Blog从Yihui的fantastic boilerplate开始使用servr::jekyll(),然后使用knitr。{/ p>

一切都花花公子,除了我无法获得rmarkdown - 引用工作(我相信它会包裹pandoc-citeproc。)

所以当我添加一些bibliography.bib

  @Manual{Yihui-2015,
    title = {knitr: A General-Purpose Package for Dynamic Report
  Generation in R},
    author = {Yihui Xie},
    year = {2015},
    note = {R package version 1.11},
    url = {http://yihui.name/knitr/},
  }

到目录,使用2014-09-28-jekyll-with-knitr.Rmdbibliography: ../bibliography.bib(见下文)修改样板bibliography: bibliography.bib的序言,并将其添加到样板文件本身:

## Citations

Work like this: [@Yihui-2015]
See the references at the very bottom.

这就是我得到的:

[no citation working[1]

为了确认我的设置实际上是正确的,我跑了

library(rmarkdown)
render(input = "_source/2014-09-28-jekyll-with-knitr.Rmd")

按预期生成带有引用的HTML

[rendered[2]

在某种程度上,这并不奇怪,因为根据样板

  

当相应的Markdown输出文件变得比源文件更旧时,通过knitr重新编译R Markdown源文件;

所以servr::jekyll目前通过knitr运行文件而不处理引文,而不是rmarkdown::render

我怎样才能让这个工作和/或对servr有用呢?

Ps.: rmarkdown::render,所有其他条件相同,都在自己的R会话中执行(对吗?),工作目录是渲染文件的目录,所以你需要../bibliography.bib才能发挥作用。 您会认为从博客目录的根运行的servr::jekyll 会将其用作其R会话中的工作目录,因此可以找到bibliography.bib。 我错了。 无论如何,这是详细的,而不是问题的核心。

1 个答案:

答案 0 :(得分:0)

事实证明,我没有仔细阅读本手册:

rmdv2()代替jekyll()是我问题的答案。

从手册:

  

函数rmdv1()和rmdv2()类似于jekyll(),唯一的区别是编译R Markdown文档的方法:rmdv1()通过knit2html()使用markdown包(又名R Markdown v1),和rmdv2()在rmarkdown包中调用render()(又名R Markdown v2)。

因为在{Markdown v2'中引入pandoc式引文,我需要rmdv2()