2012-01-18 8 views
6

A volte riesco a creare un blocco di codice R (in Sweave) che è più lungo dei margini della pagina. C'è un modo per costringerlo a "passare alla riga successiva" una volta che ciò accade?Ottenere blocchi di codice Sweave per rimanere all'interno dei margini della pagina?

Ecco un semplice esempio che questo accada:

\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} 
+0

Penso che 'knitr' dovrebbe risolvere quello ... Non sono assolutamente sicuro, ma provalo. È su CRAN ora. – aL3xa

+0

Ciao alexa - Avevo la sensazione che potesse, e spero di evitarlo a questo punto ... –

+1

In casi simili, uso elenchi di pacchetti e \ lstset {breaklines = true} –

risposta

5

Questo è un caso difficile ed estremo, perché non si dispone di spazi tra quelle a 's, in modo da LaTeX potrebbe non essere in grado di avvolgere le parole . Se disponi di spazi, knitr sarà in grado di produrre l'output con le lunghe code avvolte con tidy=TRUE, highlight=TRUE (così Sweave, penso, se imposti keep.source=FALSE).