Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改RMarkdown代码输出中错误消息的颜色(HTML、PDF)_R_Knitr_R Markdown - Fatal编程技术网

更改RMarkdown代码输出中错误消息的颜色(HTML、PDF)

更改RMarkdown代码输出中错误消息的颜色(HTML、PDF),r,knitr,r-markdown,R,Knitr,R Markdown,有没有一种方法可以在R标记中自动将错误的文本颜色设置为红色,而不必在以后手动编辑HTML --- title: "" --- #### Example 1 ```{r e1, error = TRUE} 2 + "A" ``` #### Example 2 ```{r e2, error = TRUE} 2 + 2 ``` 在上述代码中,示例1的输出必须为红色。目前,我编辑生成的HTML(将style=“color:red;”“添加到相应的标记中),但我想知道是否有一种自动方式。假设在

有没有一种方法可以在R标记中自动将错误的文本颜色设置为红色,而不必在以后手动编辑HTML

---
title: ""
---

#### Example 1

```{r e1, error = TRUE}
2 + "A"
```

#### Example 2

```{r e2, error = TRUE}
2 + 2
```
在上述代码中,
示例1
的输出必须为红色。目前,我编辑生成的HTML(将
style=“color:red;”“
添加到相应的标记中),但我想知道是否有一种自动方式。假设在编织之前不知道代码是否会产生错误。

1。用刀钩 首选的解决方案是对错误使用输出挂钩:

```{r}
knitr::knit_hooks$set(error = function(x, options) {
  paste0("<pre style=\"color: red;\"><code>", x, "</code></pre>")
})
```
") }) ``` 输出挂钩通常允许我们控制R代码不同部分的输出(整个代码块、源代码、错误、警告等等)。有关详细信息,请查看


2.使用JS/jQuery快速而肮脏的解决方案 这是我使用jQuery/Javascript的“快速脏”解决方案。只需将其添加到YAML标题下即可。 可能不是防弹的,因为它使用字符串“error”检查错误消息,这在其他应用程序中也可能发生

<script type="text/javascript">
$(document).ready(function() {
  var $chks = $("pre:not(.r) > code");
  $chks.each(function(key, val) {
    cntnt = $(this).html();
    if (cntnt.indexOf("Error") != -1) {
      $(this).css('color', 'red');
    }
  })
})
</script>

$(文档).ready(函数(){
var$chks=$(“前:非(.r)>代码”);
$chks.每个(功能(键,val){
cntnt=$(this.html();
如果(cntnt.indexOf(“错误”)!=-1){
$(this.css('color','red');
}
})
})

我在这里遇到了麻烦,因为我有同样的问题,只是关于PDF输出而不是HTML

事实证明,将@Martin Schmelzer的解决方案与@Yihui Xie Find的一些提示相结合,有助于在PDF输出中实现相同的行为

\usepackage{xcolor}
添加到YAML头中,并将以下块添加到.Rmd文件中

```{r}
color_block = function(color) {
  function(x, options) sprintf('\\color{%s}\\begin{verbatim}%s\\end{verbatim}',
                               color, x)
}
knitr::knit_hooks$set(error = color_block('red'))
```
结果是红色的错误消息,如