通过服务器在 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.bib
或 bibliography: 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()
.
我的 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.bib
或 bibliography: 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()
.