Заставить куски кода Sweave оставаться внутри полей страницы?

Иногда мне приходится делать фрагмент кода R (в Sweave), который длиннее полей страницы. Есть ли способ заставить его «перейти к следующей строке», как только это произойдет?

Вот простой пример того, что происходит:

\documentclass[a4paper]{article}

\usepackage{Sweave}

\DefineVerbatimEnvironment{Sinput}{Verbatim} {xleftmargin=2em,
                                              frame=single}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{xleftmargin=2em,
                                              frame=single}
\title{Sweave with boxes}

\begin{document}
\maketitle

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

Here is an example of a code chunk followed by an output chunk,
both enclosed in boxes.

<<>>=
print(rnorm(99))
@


<<>>=
print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
@


\end{document}

person Tal Galili    schedule 18.01.2012    source источник
comment
Я думаю, что knitr должен решить эту проблему... Я не совсем уверен, но попробуйте. Это сейчас на CRAN.   -  person aL3xa    schedule 18.01.2012
comment
Привет, Алекса - у меня было предчувствие, что это может случиться, и я надеюсь избежать этого на данный момент...   -  person Tal Galili    schedule 18.01.2012
comment
В подобных случаях я использую списки пакетов и \lstset{breaklines=true}   -  person Dieter Menne    schedule 18.01.2012
comment
Привет Дитер - я только что попробовал, но безуспешно.   -  person Tal Galili    schedule 18.01.2012
comment
@TalGalili: Привет, просто любопытно: это проблема с перемоткой или, скорее, проблема дословной среды LaTeX? В этом случае можно попробовать решить это в латексе (tex.stackexchange.com).   -  person Seb    schedule 18.01.2012
comment
Себ - хорошая идея, я только что выложил...   -  person Tal Galili    schedule 18.01.2012
comment
Я считаю, что это больше проблема LaTeX.   -  person Yihui Xie    schedule 18.01.2012
comment
stackoverflow .com/questions/8907613/   -  person Tal Galili    schedule 18.01.2012
comment
Вот ссылка на сообщение Тала о tex.stackexchange: tex.stackexchange.com/questions/41471/   -  person Josh O'Brien    schedule 18.01.2012


Ответы (1)


Это сложный и экстремальный случай, потому что у вас нет пробелов среди этих a, поэтому LaTeX может не иметь возможности переноса слов. Если у вас есть пробелы, knitr сможет создать вывод с длинными строками, заключенными в tidy=TRUE, highlight=TRUE (я думаю, что и Sweave, если вы установите keep.source=FALSE).

person Yihui Xie    schedule 18.01.2012