我把我的rmarkdown-Jekyll-博客建立在益辉的奇异样板上,因为它使用了servr::jekyll(),这反过来又包装了knitr。
一切都很好,除了我无法让rmarkdown-citations工作(我相信这反过来只是包装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.bib或bibliography: bibliography.bib修改样板bibliography: bibliography.bib的序言(参见下面),并将其添加到样板本身:
## 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,正如预期的那样:
[

在某种程度上,这并不奇怪,因为根据样板
当对应的Markdown输出文件成为older1而不是源文件时,它们会被重新编译;
servr::jekyll 当前通过不处理引用的 knitr 运行文件,而不通过 rmarkdown::render**,运行文件。**
我如何才能使它工作和/或这是一个值得增加的servr
Ps.:rmarkdown::render,所有其他条件相同,都是在它自己的R会话中执行的(对吗?),工作目录是呈现的文件的目录,所以需要../bibliography.bib才能工作。您可能会认为,从博客目录根目录运行的servr::jekyll将在其R会话中使用该目录作为工作目录,因此可以找到bibliography.bib。我可能错了。总之,这是细节,而不是问题的核心。
发布于 2015-08-20 15:05:21
结果,我看得不够仔细:
rmdv2()而不是jekyll()是我问题的答案。
从手册中:
函数rmdv1()和rmdv2()类似于jekyll(),唯一的区别是编译rmarkdown文档的方法: rmdv1()通过knit2html()使用标记包(a.k.a R Markdown v1),在rmarkdown包(a.k.a rmarkdown v2)中使用rmdv2()调用呈现()。
因为pandoc-style引文是在R Markdown v2中介绍的,所以我需要rmdv2()。
https://stackoverflow.com/questions/32100302
复制相似问题