11

我最近正在使用 knitr,虽然其中大部分方面都进行得相当顺利,但在完成的文档中包含 R 代码存在一个格式问题,我还没有弄清楚。我经常需要在我的 R 块中创建相对较长的文本字符串,例如xtable()函数的标题。虽然 tidy 通常在包装 R 代码并将其保存在 LaTeX 中的阴影框中做得很好,但它不知道如何处理文本字符串,所以它不包装它们,它们从右侧流出页。

我会很高兴有一个整洁地完成所有工作的解决方案。但是,我也会对可以手动应用于我的 Rnw 源中的 R 块中的长字符串的解决方案感到满意。我只是不想编辑由 KnitR 创建的 tex 文件。

下面是一个最小的工作示例。

\documentclass[12pt, english, oneside]{amsart}

\begin{document}

<<setup, include=FALSE, cache=FALSE, tidy=TRUE>>=
options(tidy=TRUE, width=50)
@

<<>>=
x <- c("This","will","wrap","nicely","because","tidy","knows","how","to","deal","with","it.","So","nice","how","it","stays","in","the","box.")
longstr <- "This string will flow off the right side of the page, because tidy doesn't know how to wrap it."
@

\end{document}
4

3 回答 3

4

这是一个非常手动的解决方案,但我已经使用过。

你建立了字符串,使用paste0它,这给了整洁的机会来分裂它。

longstr <- paste0("This string will flow off the right side"," of the page, because tidy doesn't know how to wrap it.")
于 2013-02-15T23:55:32.697 回答
3

另一种解决方案是使用strwrap

> longstr <- "This string will flow off the right side of the page, because tidy doesn't know how to wrap it."
> strwrap(longstr, 70)
[1] "This string will flow off the right side of the page, because tidy" "doesn't know how to wrap it."                                      
> str(strwrap(longstr, 70))
chr [1:2] "This string will flow off the right side of the page, because tidy" "doesn't know how to wrap it."

不幸的是,我不知道这是否适用于 tidy,但它适用于 knitr 的 HTML 输出。

于 2013-03-12T21:38:19.760 回答
1

这个答案对派对来说有点晚了,但我发现即使我tidy.opts = list(width.cutoff = 60)在早期的块中使用(使用 RStudio 和 .Rnw 脚本),然后在我包含的每个块选项列表中tidy = TRUE,行的溢出仍然发生。我的溢出行位于创建 ggplot2 图的代码部分中。试错发现,如果我在行尾的+后加回车,就没有溢出问题了。LaTeX 创建的 PDF 中不会显示额外的行。

于 2016-01-07T20:54:56.377 回答