通过服务器在 Jekyll 博客中启用 markdown / pandoc-citeproc 引用

Enable rmarkdown / pandoc-citeproc citations in Jekyll blog via servr

我的 rmarkdown-Jekyll-Blog 基于易辉的 fantastic boilerplate for using servr::jekyll(),后者又包含 knitr.

一切都很好,除了我无法让 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/},
  }

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

## Citations

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

这是我得到的:

[

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

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

产生 HTML with 引用,正如预期的那样:

[

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

R Markdown source files are re-compiled through knitr when their corresponding Markdown output files become older1 than source files;

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

我怎样才能让它发挥作用 and/or 这对 servr 是一个有价值的补充吗?

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

原来是我看说明书不够仔细:

rmdv2() 而不是 jekyll() 是我问题的答案。

来自手册:

The functions rmdv1() and rmdv2() are similar to jekyll(), and the only difference is the way to compile R Markdown documents: rmdv1() uses the markdown package (a.k.a R Markdown v1) via knit2html(), and rmdv2() calls render() in the rmarkdown package (a.k.a R Markdown v2).

因为pandoc-style citations are introduced in R Markdown v2,我需要rmdv2().