R blogdown 无法找到图像文件

R blogdown fails to find image files

我有一个使用 blogdown 制作的工作网站。今天我试图重建网站,这是几个月来的第一次,但我遇到了错误,因为它显然找不到我的图片。

为了制作 reprex,我制作了一个新项目,并选择了 "website with blogdown" 选项并采用了所有默认值。使用 blogdown::serve_site() 构建的网站没有问题。我把一张名为x.png的图片放到静态目录下,并添加:

```{r x, fig.cap='x', tidy=FALSE}
knitr::include_graphics("x.png")
```

进入 2015-07-23-r-rmarkdown.Rmd 文件。当我告诉它 blogdown:::serve_site() 我得到:

Error in knitr::include_graphics("x.png") : 
  Cannot find the file(s): "x.png"
Calls: local ... withCallingHandlers -> withVisible -> eval -> eval -> <Anonymous>
Execution halted

然后我尝试使用 "Addins" 菜单添加图像并选择 Insert Image 并将其指向文件。它复制了文件并将预期的降价写入 2015-07-23-r-rmarkdown.Rmd:

![](/post/2015-07-23-r-rmarkdown_files/x.png)

抛出了这个错误:

pandoc: /post/2015-07-23-r-rmarkdown_files/x.png: openBinaryFile: does not exist (No such file or directory)
Error: pandoc document conversion failed with error 1
Execution halted

关于到底哪里出了问题有什么想法吗?

> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.3

Matrix products: default
BLAS:   /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.3           later_1.0.0          compiler_3.6.2       pillar_1.4.3        
 [5] prettyunits_1.1.1    tools_3.6.2          digest_0.6.25        packrat_0.5.0-25    
 [9] pkgbuild_1.0.6       jsonlite_1.6.1       evaluate_0.14        lifecycle_0.2.0     
[13] tibble_2.1.3         gtable_0.3.0         pkgconfig_2.0.3      rlang_0.4.5         
[17] cli_2.0.2            rstudioapi_0.11      parallel_3.6.2       yaml_2.2.1          
[21] blogdown_0.18        xfun_0.12            loo_2.2.0            gridExtra_2.3       
[25] stringr_1.4.0        dplyr_0.8.4          knitr_1.28           tidyselect_1.0.0    
[29] stats4_3.6.2         grid_3.6.2           glue_1.3.1           inline_0.3.15       
[33] R6_2.4.1             processx_3.4.2       fansi_0.4.1          rmarkdown_2.1       
[37] bookdown_0.18        rstan_2.19.3         servr_0.16           purrr_0.3.3         
[41] magrittr_1.5         callr_3.4.2          ggplot2_3.3.0        promises_1.1.0      
[45] matrixStats_0.55.0   scales_1.1.0         ps_1.3.2             StanHeaders_2.21.0-1
[49] htmltools_0.4.0      rsconnect_0.8.16     assertthat_0.2.1     mime_0.9            
[53] colorspace_1.4-1     httpuv_1.5.2         stringi_1.4.6        munsell_0.5.0       
[57] crayon_1.3.4  
> rmarkdown::pandoc_version()
[1] ‘2.7.3’

使用插件的第二种方法:你不应该编写这个 RMD 文件。如果你只是使用插件 "serve site" 它会按预期工作。当然,如果你编织它就不会起作用,因为文件被复制到"static/post/...."并且你的RMD文件在"content/post/..."

试着把你的图片放在 de "content/post" 里面。您可以使用插件 "new post" 并为每个 post "content/post/my_incredible_post" 创建一个子目录,然后您的文件将全部在同一个地方。然后你可以使用:

knitr::include_graphics("x.png")

![](x.png)

这是我如何组织博客的示例 post:

site/content/blog/veterans/ 包含我的博客 post 作为 index.md

site/content/blog/veterans/gallary 包含我在博客 post 中使用的图片。 要在博客post中调用我的图片,我使用![png](./gallery/uspop.png)

如果它和我的博客post在同一个目录下,我会使用![png](./uspop.png)

如果有帮助,您可以查看我的 GitHub 存储库: https://github.com/datasurfergtx/site/tree/master/content/blog/veterans

谢谢大家。我原来的网站需要添加 "error = FALSE" 选项。我认为由于 knitr 1.28 中的更改,此代码失败:

knitr::include_graphics("/post/2019-12-10-installing-r-rstudio-on-windows_files/marginWin.png")

但这行得通:

knitr::include_graphics("/post/2019-12-10-installing-r-rstudio-on-windows_files/marginWin.png", error = FALSE)

我在做reprex的时候引入了第二个问题。叹气... include_graphics() 调用中的路径需要以 /

开头