knitr 如何将警告消息保留在盒子内?
How can knitr keep warning messages inside the box?
我正在使用 knitr 编写教程,我想展示学生可能遇到的一些警告和错误。虽然我能够使用 tidy=TRUE
选项在框中很好地显示代码块,但我不明白如何处理警告和错误的显示。例如,如果我有以下代码:
\documentclass{article}
\begin{document}
<<setupOp, include=FALSE>>=
opts_chunk$set(tidy=TRUE,
tidy.opts=list(blank=FALSE, width.cutoff=20))
@
<<ErrorTest>>=
warning(paste("A suuuuuuuuuuuuuuuuuper", "loooooooooooong waaaaaaaaaaaaarning"))
@
\end{document}
警告代码行很好地显示在框内,但警告本身超出了框。我觉得这与警告消息是一个很长的字符串这一事实有关,但我不知道如何告诉 knitr 将警告保留在框中。我查看了 knitr chunk options and this formatR info 上的文档,但找不到解决方案。
谢谢!
LaTeX 试图在此处生成左右对齐的文本块。这意味着换行和连字符以获得漂亮的直右边缘。你的警告里面有很长的词,LaTeX 不会用连字符连接打字机文本,所以它会溢出为其分配的框并向 TeX 日志文件打印溢出警告。
即使它可以对文本进行断字,它也可能很难找到一个合适的位置来对一个奇怪的词进行断字。例如,您永远不应将 "buttoned" 跨行打断为 "but-toned"。 TeX 对此有一个复杂的算法。
一个解决方案可能是为您的 R 块设置 \raggedright:
{
\raggedright
<<setupOp, include=FALSE>>=
opts_chunk$set(tidy=TRUE,
tidy.opts=list(blank=FALSE, width.cutoff=20))
@
<<ErrorTest>>=
warning(paste("A suuuuuuuuuuuuuuuuuper", "loooooooooooong waaaaaaaaaaaaarning"))
@
}
像这样,TeX 应该在一个单词超出框外时另起一行。包含在花括号对中,这样普通文本不受影响。我不知道这在代码块中还会影响什么,所以买者自负。
我正在使用 knitr 编写教程,我想展示学生可能遇到的一些警告和错误。虽然我能够使用 tidy=TRUE
选项在框中很好地显示代码块,但我不明白如何处理警告和错误的显示。例如,如果我有以下代码:
\documentclass{article}
\begin{document}
<<setupOp, include=FALSE>>=
opts_chunk$set(tidy=TRUE,
tidy.opts=list(blank=FALSE, width.cutoff=20))
@
<<ErrorTest>>=
warning(paste("A suuuuuuuuuuuuuuuuuper", "loooooooooooong waaaaaaaaaaaaarning"))
@
\end{document}
警告代码行很好地显示在框内,但警告本身超出了框。我觉得这与警告消息是一个很长的字符串这一事实有关,但我不知道如何告诉 knitr 将警告保留在框中。我查看了 knitr chunk options and this formatR info 上的文档,但找不到解决方案。
谢谢!
LaTeX 试图在此处生成左右对齐的文本块。这意味着换行和连字符以获得漂亮的直右边缘。你的警告里面有很长的词,LaTeX 不会用连字符连接打字机文本,所以它会溢出为其分配的框并向 TeX 日志文件打印溢出警告。
即使它可以对文本进行断字,它也可能很难找到一个合适的位置来对一个奇怪的词进行断字。例如,您永远不应将 "buttoned" 跨行打断为 "but-toned"。 TeX 对此有一个复杂的算法。
一个解决方案可能是为您的 R 块设置 \raggedright:
{
\raggedright
<<setupOp, include=FALSE>>=
opts_chunk$set(tidy=TRUE,
tidy.opts=list(blank=FALSE, width.cutoff=20))
@
<<ErrorTest>>=
warning(paste("A suuuuuuuuuuuuuuuuuper", "loooooooooooong waaaaaaaaaaaaarning"))
@
}
像这样,TeX 应该在一个单词超出框外时另起一行。包含在花括号对中,这样普通文本不受影响。我不知道这在代码块中还会影响什么,所以买者自负。