knitr:如何从块内部获取和覆盖块选项

knitr: how to get and override chunk options from inside a chunk

我有 2 个关于 knitr 块选项的问题:

1) 是否可以从一段代码中覆盖 knitr 块选项,以便在同一块中应用这些选项?例如编写类似于以下行的内容并获得结果 as-is:

```{r, results= "markup"}
    knitr::opts_chunk$set(results= "asis")
    for (i in 1:5)
        print("# This text should be printed 'as-is'")
```

p.s。我熟悉 knitr::asis_output

2) 是否可以从块内部获取块选项?例如,使用如下代码:

```{r}
   knitr::opts_chunk$get("results")
```

并获取字符串 markup.

```{r, results='asis'}
   knitr::opts_chunk$get("results")
```

并获取字符串 asis.

不幸的是,knitr::opts_chunk$get("results") 获取全局选项,而不是当前块的选项。

1) 可以使用函数 knitr::normal_printknitr::asis_output 自定义打印(正如您提到的)。例如:

```{r, results='markup'}
knitr::asis_output(replicate(5, "# This text should be printed 'as-is'\n"))

print("# This text should be printed 'normal'")
```

或者

```{r, results='asis'}
for (i in 1:5)
    cat("# This text should be printed 'as-is'\n")

knitr::normal_print("# This text should be printed 'normal'\n")
```

2) 可以使用 knitr::opts_current$get() 检索当前块选项。使用 :

```{r, results='asis'}
knitr::opts_current$get("results")
```

并获取字符串 asis