2012-11-12 24 views
5

Voglio dimostrare un pezzo campione di codice R WITH the knitr < < .. >> = preambolo in un documento LaTeX. Ecco un esempio di output che desidero:><<..>> = in uscita

snip-of-code

Deve essere semplice - ma mi manca qualcosa. Ho controllato la documentazione e l'overflow dello scanner scansionato, ma senza fortuna. Ecco un MWE:

\documentclass{article} 
    \begin{document} 
    <<mychunk, cache=TRUE, eval=FALSE, dpi=100>>= 
    "hello world" 
    @ 
    \end{document} 

Suggerimenti? Ho provato a indentare il codice in LaTex e il wrapping in un blocco verbatim, ma ho solo degli errori.

+0

Un ambiente verbatim può aiutare? –

+0

@Lustrik - Ho provato '\ begin {verbatim} ... \ end {verbatim}' e ottenuto errori di compilazione di latex. –

+0

Questo sarebbe dovuto al fatto che sta ancora compilando il codice knitr inline e quindi sta tentando di avviare un ambiente verbatim all'interno di un ambiente verbatim –

risposta

6

Ho appena controllato il manuale di knitr. In questo modo il pacchetto autore risolto il problema:

<<use-ext-chunk, echo=FALSE, comment=NA>>= 
cat('<<Q1, echo=TRUE, tidy=TRUE>>=','@',sep='\n') 
@ 

che produce l'uscita come mostrato a pagina 9 del knitr manual

Ecco un esempio minimo:

\documentclass[a4paper]{article} 
\begin{document} 


<<use-ext-chunk, echo=FALSE, comment=NA>>= 
    cat('<<Q1, echo=TRUE, tidy=TRUE>>=','@',sep='\n') 
@ 

\end{document} 

che produce la uscita allegata.

enter image description here

+0

Grazie! Non sapevo dove guardare per vedere come l'ha fatto l'autore di Knitr. Credo che proporrò una nuova nuova opzione chunk, qualcosa come 'display.wrapper = TRUE' in modo che anche le opzioni originali del blocco siano incorporate nell'output. –

+0

Questa è una buona proposta e Yihui è davvero disponibile e aperta a nuove idee. Quindi fagli sapere cosa pensa. –

+0

@JohnLeonard Adoro assolutamente la proposta e mi sento doloroso scrivere '<<>> =' anche nelle esercitazioni! –

4

Ho avuto la stessa domanda su tex.stackexchange.com un anno fa e ho ricevuto alcune belle risposte: https://tex.stackexchange.com/q/35485/3419. Questo è per Sweave ma penso che funzionerà lo stesso in knitr.

Penso di aver finito usando solo \Sexpr{"<<>>="} e \Sexpr{"@"} in ambiente verbatim. ad esempio:

\documentclass{article} 
\begin{document} 
\begin{verbatim} 
\Sexpr{"<<mychunk, cache=TRUE, eval=FALSE, dpi=100>>="} 
"hello world" 
\Sexpr{"@"} 
\end{verbatim} 
\end{document} 
+0

Anche correlato: http://tex.stackexchange.com/q/35830/3419 –

+0

Questa è una soluzione praticabile - ma per Sweave non Knitr. Knitr non istanzia l'ambiente '\ Sexpr'. Grazie! –

+0

@SachaEpskamp Ho appena inventato un metodo malvagio per spostare altre risposte più in basso semplicemente includendo una pagina grande, quasi bianca. Non è stato fatto apposta qui, quindi spero che tu mi perdoni ;-) Btw: Concederò questa soluzione, quindi per favore non copiarti ... –

3

Solo un rapido follow-up: questa funzione è stata implementata in knitr (devel version> = 0.8.15); vedere esempi per entrambi Rnw e Rmd. Una soluzione alternativa è knitr FAQ.

Problemi correlati