rmarkdown生成GitLab Wiki时htmlwidgets渲染为图片如何解决
问题根源
默认md_document输出模式下,knitr会优先将htmlwidget类的交互式对象渲染为静态图片,规避GFM文档的HTML兼容性问题,该规则优先级高于always_allow_html参数配置,所以会出现转图情况。
修复方案
方案1:全局配置钩子(推荐)
在Rmd文档最开头新增setup代码块,覆盖默认的htmlwidget打印逻辑,后续所有htmlwidget对象都会自动输出为HTML片段:
```{r setup, include=FALSE} library(knitr) opts_chunk$set(echo = TRUE) # 自定义htmlwidget输出规则 knit_print.htmlwidget <- function(x, ...) { asis_output(as.character(x)) }
原有YAML配置不需要修改,重新渲染即可得到嵌入HTML的md文档。 ## 方案2:单块手动配置 如果不想修改全局规则,可以单独给每个用到htmlwidget的代码块加上`results='asis'`参数,手动输出HTML内容: ```r ```{r, results='asis', echo=TRUE} require(reactable) r <- reactable(data.frame(1:4,4:1)) cat(as.character(r))
```r ```{r, results='asis', echo=TRUE} require(leaflet) l <- leaflet() cat(as.character(l))
# 注意事项 - GitLab Wiki默认支持内嵌HTML,若你的实例开启了严格的内容安全策略(CSP),需要管理员将leaflet、reactable依赖的CDN域名加入白名单,交互式组件才能正常加载 - 若为内网GitLab实例,可将htmlwidget的依赖资源下载后上传到Wiki的静态资源目录,替换HTML片段中的CDN路径即可在内网正常访问 内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

