【问题标题】:Change color of error messages in RMarkdown code output (HTML, PDF)更改 RMarkdown 代码输出(HTML、PDF)中错误消息的颜色
【发布时间】:2018-08-16 23:59:34
【问题描述】:

有没有办法在 R Markdown 中自动将错误的文本颜色设置为红色,而无需稍后手动编辑 HTML。

---
title: ""
---

#### Example 1

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

#### Example 2

```{r e2, error = TRUE}
2 + 2
```

在上面的代码中,Example 1 的输出必须是红色的。目前,我编辑生成的 HTML(将 style="color:red;" 添加到适当的标签中),但我想知道是否有自动方式。假设在编织之前不知道代码是否会产生错误。

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    1。使用编织钩

    首选的解决方案是使用输出挂钩来处理错误:

    ```{r}
    knitr::knit_hooks$set(error = function(x, options) {
      paste0("<pre style=\"color: red;\"><code>", x, "</code></pre>")
    })
    ```
    

    输出挂钩通常允许我们控制 R 代码不同部分的输出(整个块、源代码、错误、警告等)。详情请查看https://yihui.name/knitr/hooks/#output-hooks


    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>
    

    【讨论】:

      【解决方案2】:

      我在这里绊倒了,因为我有同样的问题,但对于 PDF 输出而不是 HTML。

      事实证明,将@Martin Schmelzer 的解决方案与@Yihui Xie 的一些提示相结合,发现here 有助于在 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'))
      ```
      

      结果是红色的错误信息,如

      【讨论】:

        猜你喜欢
        • 2015-05-16
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-25
        相关资源
        最近更新 更多