如何在不丢失包装的情况下更改 knitr 输出块中警告和错误消息的颜色?

How do I change color of warning and error messages in knitr output chunk without losing wrapping?

我希望输出块中打印的警告和错误分别为黑色而不是紫红色和红色。我试图按照这里的对话 github.com/yihui/knitr/issues/264 来解决这个问题。这是我到目前为止的一个简短示例(第一块)。

\documentclass{article}
\begin{document}
<<echo=FALSE>>=
color_block = function(color) {
  function(x, options) sprintf('{\color{%s}\begin{verbatim}%s\end{verbatim}}',color, x)
}
knit_hooks$set(warning=color_block('black'),error=color_block('black'))
@

<<>>=
lens <- c(10,20,30,40)
lens + c(100,200,300)
@
\end{document}

我已成功将消息的颜色更改为黑色,但消息现在不会换行以保持在输出块边界内,并且消息前后有额外的空格(请参阅第二个块的结果)。

据此 ,我认为 \raggedright 可能会有所帮助,但我对这段代码的理解不够透彻,无法对其进行适当修改。

如有任何帮助,我们将不胜感激。提前谢谢你。

p.s.,这是我的 unanswered question on the knitr Google Group from a few days ago.

的副本

是的,有。在 .rnw 文件的序言中使用以下代码。

\ifdefined\knitrout
\renewenvironment{knitrout}
{\definecolor{warningcolor}{rgb}{0, 0, 0} \definecolor{errorcolor}{rgb}{0, 0, 0}}
{  }
\else
\fi