块选项class.output无法处理错误消息

时间:2018-01-31 09:11:24

标签: r knitr r-markdown chunks bookdown

我正在准备课程教程,我想将错误的颜色更改为红色。我使用BookDown和gitbook作为输出格式。但我发现选项class.output不起作用。我想在输出中为我得到的错误消息添加一个类。我怎样才能做到这一点?您可以将此作为示例:

---
title: "Test Book"
author: "therimalaya"
site: bookdown::bookdown_site
output: bookdown::gitbook
---

# Hello World

```{r, error = TRUE, class.output="red"}
rnorm(-10)
```

如果没有错误,这是有效的。

2 个答案:

答案 0 :(得分:6)

class.output未应用于错误(请参阅here) 在this answer之后,我建议您使用错误挂钩:

```{r error-hook, echo=FALSE}
knitr::knit_hooks$set(error = function(x, options) {
  paste0(
    "```{", 
    ifelse(is.null(options$class.error), 
           "", 
           paste0(" .", gsub(" ", " .", options$class.error))
    ),
    "}\n",
    x,
    "\n```"
  )
})
```

现在,您可以在块中使用“新”class.error选项。

```{r, error = TRUE, class.error="red"}
rnorm(-10)
```

随意打开功能请求here

答案 1 :(得分:0)

使用自定义CSS类处理错误,警告和消息的能力为just added to knitr,因此您将能够使用以下语法。

```{r error = TRUE, class.error = "bg-danger text-danger"}
rnorm(-10)
```

我在这里使用Bootstrap classes,但是您可以将所需的任何课程传递给class.error。块选项class.messageclass.warning也可以使用。请注意,class.output仅适用于标准代码输出。