11

私は最近、knitr を使って作業しています。そのほとんどの側面は非常にスムーズに進んでいますが、完成したドキュメントに R コードを含める際の書式設定の問題が 1 つあります。関数のキャプションなど、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

これは非常に手動のソリューションですが、私が使用したものです。

and を使用して文字列を構築するpaste0と、tidy はそれを分割する機会が与えられます。

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

もう 1 つの解決策は、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 に答える