RStudio1.4升级后Rmarkdown无法渲染原始HTML问题如何解决
问题原因
RStudio 1.4 配套升级的 knitr、rmarkdown 版本调整了原生 HTML 内容的识别逻辑,你的代码存在两处不符合新版规则的写法:
asis_output()生成的是携带特殊属性标记的 knitr 专属对象,使用cat()输出会丢失属性标记,导致 HTML 代码被自动转义,无法渲染为预期的绿色文本样式- 函数末尾的
return(0)会额外输出数值 0,干扰预期渲染结果
修复方案
方案1:调整函数返回逻辑(推荐)
移除 cat() 和多余的 return(0),直接返回 asis_output() 对象即可:
f <- function(text){ asis_output(htmltools::htmlPreserve(paste("<span style=\"color:green\">", text, "</span>"))) }
调用时无需赋值给变量,直接运行函数:
f('Hello!')
方案2:配合asis参数保留cat写法
如果需要保留 cat() 输出逻辑,可以移除 asis_output 和 htmlPreserve 调用,给对应代码块添加 results='asis' 参数:
f <- function(text){ cat(paste("<span style=\"color:green\">", text, "</span>")) return(invisible(0)) }
调用函数的代码块添加参数:
```{r, results='asis'} x <- f('Hello!')
--- 内容的提问来源于stack exchange,提问作者Alfredo Sánchez
相关产品推荐
相关产品推荐

