在knitr sweave中添加换行符,保持整齐= TRUE

时间:2014-05-02 22:39:27

标签: r knitr sweave

我知道如果为相关代码块设置tidy = FALSE,我可以手动格式化所有代码,但我喜欢tidy = TRUE选项。这让我的代码看起来很棒!但是我有一个很长的矢量,我想要打印它,它会离线并导致一个LaTeX坏盒。

编辑 - 我知道人们喜欢这样的例子。这是一个例子。

<<HolySnail>>=
X <- data.frame(p1=c(0,2,0,0,-1,1),
                p2=c(3,0,1,1,0,1),
                p3=c(0,0,3,2,1,1))
poor_formatting_requires_tidying <- function(x,y,z) { a <- x*y+z; return(a+z) }
@

编辑 - 问题是“如何在不设置整齐=假的情况下强制编织者遵守X定义中的换行符?”

1 个答案:

答案 0 :(得分:0)

我猜你只是想找一个控制源代码宽度的选项?使用tidy = TRUE设置宽度非常棘手;您经常需要尝试不同的值才能获得合适的宽度。您可以使用tidy.opts选项将width.cutoff参数传递给formatR::tidy.source(),例如

\documentclass{article}
\begin{document}
<<HolySnail, tidy.opts=list(width.cutoff=60)>>=
X <- data.frame(p1=c(0,2,0,0,-1,1),
                p2=c(3,0,1,1,0,1),
                p3=c(0,0,3,2,1,1))
poor_formatting_requires_tidying <- function(x,y,z) { a <- x*y+z; return(a+z) }
@
\end{document}

注意width.cutoff仅设置最小宽度,这意味着输出可能比您的设置更宽。这取决于R是否真的可以在width.cutoff个字符之后破坏代码。

在您调整宽度值后,您可能会回到tidy = FALSE ......