首页 > 解决方案 > 如何解决 pandoc 问题

问题描述

在 VSCode 中使用时遇到问题saveWidget,可能是pandoc.

当我在 Rstudio 中运行以下行时,它运行良好并且mtcars.html可以生成

htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html", selfcontained = TRUE, title = "mtcars")

但是,当我将相同的代码移动到 VSCode 时,它​​给了我一个错误,说

Error in htmlwidgets::saveWidget(DT::datatable(mtcars), "mtcars.html",  : 
  Saving a widget with selfcontained = TRUE requires pandoc. For details see:
https://github.com/rstudio/rmarkdown/blob/master/PANDOC.md

我怀疑 VSCode 无法识别 的路径pandoc,因为我输入find_pandoc了 VScode 来查找版本和目录,这表明

> rmarkdown::find_pandoc()
$version
[1] '0'

$dir
NULL

但是,在 Rstudio 中,它显示

> find_pandoc()
$version
[1] ‘2.7.2’

$dir
[1] "C:/Program Files/RStudio/bin/pandoc"

标签: rvscode-settingspandoc

解决方案


为了了解发生了什么,让我们看一下rmarkdown:::find_pandoc(). 我们可以在那里找到以下几行:

sys_pandoc <- find_program("pandoc")
sources <- c(Sys.getenv("RSTUDIO_PANDOC"), if (nzchar(sys_pandoc)) dirname(sys_pandoc))

sources然后用于获取pandoc路径。我怀疑在你的情况下RSTUDIO_PANDOC没有设置,所以rmarkdown:::find_pandoc()依靠find_program("pandoc")找到路径。如果你反过来看它的源码,你会发现路径是由运行确定的Sys.which,相当于从shell中提取路径:

报告可执行文件(包括可执行脚本)的完整路径名的系统命令将由 shell 执行...

话虽如此,您需要将 pandoc 的路径添加到PATH系统上的环境变量中。


推荐阅读