【问题标题】:Rmarkdown not rendering raw HTMLRmarkdown 不呈现原始 HTML
【发布时间】:2021-08-20 09:54:16
【问题描述】:

将 Rstudio 升级到 1.4 版本后,当我渲染这个 rmarkdown 文档时

---
title: "Raw HTML"
output: html_document
---

```{r setup, include=FALSE}
library(knitr)
library(htmltools)
knitr::opts_chunk$set(echo = F)
```

```{r}
f <- function(text){
   cat(asis_output(htmltools::htmlPreserve(paste("<span style=\"color:green\">", text, "</span>"))))
   return(0)
}
```

```{r}
x <- f('Hello!')
```

我得到了这个 html 文档

但在更新之前,此代码按预期工作,呈现此 html 文档

如何获取第二个 html 文档?

【问题讨论】:

    标签: r r-markdown knitr pandoc


    【解决方案1】:

    cat 删除 knit_asis 类。
    您可以避免使用cat 或使用results='asis' chunck 选项:

    ---
    title: "Raw HTML"
    output: html_document
    ---
    
    ```{r setup, include=FALSE}
    library(knitr)
    library(htmltools)
    knitr::opts_chunk$set(echo = F)
    ```
    
    ```{r}
    side.effect <- function(text){
       cat(asis_output(htmltools::htmlPreserve(paste("<span style=\"color:green\">", text, "</span>"))))
      return(0)
    }
    
    direct <- function(text){
       asis_output(htmltools::htmlPreserve(paste("<span style=\"color:green\">", text, "</span>")))
    }
    ```
    
    
    ```{r}
    direct('direct Hello!')
    ```
    
    ```{r,results ='asis'}
    x <- side.effect('side effect Hello!')
    ```
    

    【讨论】:

    • 但是,asis_output这个函数应该和results='asis'的效果一样吧?
    • 谢谢,但是函数 f 必须返回一个值,以便我用于另一个计算,并且作为副作用,在文档中打印原始 HTML 代码。
    • 使用两个可用选项查看我的编辑
    • 再次感谢!我不明白的是为什么我之前可以直接使用catwriteLines 执行此操作,而无需在chunck 中使用results = 'asis'。在某些时候catwriteLines 必须已更新以删除knit_asis
    • cat 返回可以用results='asis' 解释为html 的字符。要检查这个:class(capture.output(cat(asis_output("test"))))asis_output 返回一个 knit_asis 类的对象,参见 class(asis_output("test")),它是 knitted asis。
    猜你喜欢
    • 2016-04-26
    • 2017-08-02
    • 1970-01-01
    • 2020-04-21
    • 2019-08-29
    • 1970-01-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多