pandoc 和 rmarkdown:无法获取比 rmarkdown 文档高一级的图像

pandoc and rmarkdown: Can't fetch an image one level above a rmarkdown document

我刚开始使用 rmarkdown、pandoc 和 knitr。我在尝试让 pandoc 获取比 rmarkdown 文档高一级的图像时遇到了很多困难。例如,假设我们的项目目录是 ~/test,下面的 rmarkdown 位于 ~/test/scripts:

---
title: "test"
---

```{r global_options, include=FALSE}
library('knitr')
opts_knit$set(root.dir = '~/test')
```

![test](figures/test.svg)

然后我从 ~/test 目录中 运行 命令 Rscript -e "rmarkdown::render('scripts/test.Rmd')"。它给了我错误:

pandoc: Could not fetch figures/test.svg
figures/test.svg: openBinaryFile: does not exist (No such file or directory)

我会认为通过将 root.dir 设置为项目目录,pandoc 将获取与该目录相关的文件?但似乎 "working directory" 总是设置为相对于 rmarkdown 文档所在的位置?任何帮助,将不胜感激。谢谢,

>sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C               LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] vimcom_1.0-0   setwidth_1.0-3 colorout_1.0-2

loaded via a namespace (and not attached):
[1] tools_3.1.0`

Pandoc 不知道 knitrroot.dir 选项。您必须编写相对于当前工作目录的路径,例如 ../figures/test.svg。或者scripts目录下的运行Rscript

如果你刚开始使用rmarkdownknitr,我强烈建议你不要使用root.dir选项,除非你真的明白这意味着什么。这些目录可以是 really, really tricky.