编织器输出中R输入的纯代码块



目标

在我想转换为LaTeX的R/Markdown文档中,我想设置knitr选项,以便整个文档默认情况下对所有代码输入使用纯代码块。因此,对于。带有的Rmd文档

```{r}
x <- 1 + 1
```

我想获得输出

```
x <- 1 + 1
```

使用高亮显示选项

我曾希望highlight=FALSE选项可以用于此操作,但这会生成文本块而不是纯块。更准确地说,对于上面的简单示例,knit()默认情况下(即,使用highlight = TRUE)生成R块:

```r
x <- 1 + 1
```

设置knitr::opts_chunk$set(highlight = FALSE)后,生成一个文本块:

```text
x <- 1 + 1
```

但我想要的是一个没有任何特殊语言的普通大块,见上文。

与lang选项的组合

我可以通过获得我想要的东西

knitr::opts_chunk$set(highlight = TRUE, lang = "")

因此,我确实启用了高亮显示,但将lang设置为空字符串。这确实产生了我想要的普通代码。

不过,至少有一个缺点(除了这种解决方案相当粗糙的感觉)。也就是说,如果在同一文档中,我确实希望在一个特定块的选项中启用高亮显示,我现在必须设置lang = "r"而不是highlight = TRUE,例如

```{r, lang="r"}
x <- 1 + 1
```

所以我想知道是否有更好的解决方案?

背景

在旧版本的pandoc(我尝试了2.9.x)中,文本块在LaTeX输出中转换为{verbatim}代码块。

然而,最近版本的pandoc(我尝试了2.17.x)文本块被转换为{Shaded},并且只有普通块被转换成{verbatim}

另一个棘手的解决方案是(我甚至不敢解释):

```{r}
knitr::opts_hooks$set(highlight = function(options) {
if (!options$highlight) {
options$highlight = TRUE
options$lang = ''
}
options
})
knitr::opts_chunk$set(highlight = FALSE)
```
```{r}
1 + 1
```
```{r, highlight=TRUE}
2 + 2
```

highlight = FALSE当前在knifer中硬编码时,语言名称text,因此无法更改:https://github.com/yihui/knitr/blob/907184f82/R/hooks-md.R#L171我对它的可配置性持开放态度,但我不确定如何配置(我希望在highlight = FALSE的情况下不添加用于设置语言的新块选项)。

我不确定我是否完全理解您想要什么,但yaml头中的这一点有帮助吗?

---
output:
html_document:
theme: null
highlight: null
---

最新更新