如何自动防止Sweave中的R输入偏离右边距?

时间:2013-02-26 18:30:18

标签: r sweave

是否可以让Sweave自动在多行上打印R输入?例如,

\documentclass{article}

\begin{document}
\SweaveOpts{concordance=TRUE}
\setkeys{Gin}{width=\textwidth}

<<fig=TRUE>>=
plot(LakeHuron, ylab="Level in feet", xlab="Year", main="Level of Lake Huron 1875–1972", lwd=2, las=1) 
@

\end{document}

将打印R代码以进入(和超出)右边距。从我可以推断出来,

<<>>=
options(width=60)
@ 

仅控制R输出。

2 个答案:

答案 0 :(得分:3)

使用,您可以尝试将参数keep.source = FALSE添加到您的代码块中,但默认情况下仍然无法解决您的问题(在此特定示例中没有)。< / p>

以下是您目前所拥有的输出结果:

<<fig=TRUE>>=
plot(LakeHuron, ylab="Level in feet", xlab="Year", main="Level of Lake Huron 1875–1972", lwd=2, las=1) 
@

enter image description here

如果我们添加keep.source = FALSE

,这是输出的裁剪
<<fig=TRUE, keep.source=FALSE>>=
plot(LakeHuron, ylab="Level in feet", xlab="Year", main="Level of Lake Huron 1875–1972", lwd=2, las=1) 
@

enter image description here

而且,如果我们作弊一点并手动重新排序参数,这里是输出的裁剪。请注意,我已将有问题的标题作为最后一项:

<<fig=TRUE, keep.source=FALSE>>=
plot(LakeHuron, ylab="Level in feet", xlab="Year", lwd=2, las=1, main="Level of Lake Huron 1875-1972") 
@

enter image description here

答案 1 :(得分:3)

我使用knitr编译.Rnw文件,它提供了一些非常方便的代码块选项(如tidy.opts)的访问。我认为,使用下面的代码可能会解决您的数字上方的文本溢出问题。

\documentclass{article}

\begin{document}
\setkeys{Gin}{width=\textwidth}

<<fig=TRUE, tidy.opts=list(keep.blank.line=FALSE, width.cutoff=50)>>=
plot(LakeHuron, ylab="Level in feet", xlab="Year", main="Level of Lake Huron 1875–1972", lwd=2, las=1) 
@

\end{document}