2015-04-18 7 views
6

sto generando HTML- e PDF-notebook da R -scripts utilizzando 's funzione render() e knitr' la funzione spin() s. A volte uso liste annidate e le mescolo con blocchi di codice. Ecco un esempio che utilizza le opzioni di porzioni e knitr.rotazione di Rmarkdown render() + di knitr(): come mescolare i blocchi di codice e gli elementi nidificati

#' (1) This is normal text. 
#' (a) This is normal text but indented. 
#+ echo = TRUE, eval = TRUE 
print("This is code") 
#' (b) This is supposed to be normal text with the same 
#'  indentation as (a). However, it will be formatted as code. 
#'  By this I mean that e.g. in a pdf-notebook it will be 
#'  correctly indented but the font will be the same font as 
#'  the code. 

Tuttavia, tutto ciò che segue il codice dopo elemento della lista (a) viene marcato come codice pure (per esempio (b)). Ma quello che voglio ottenere è di avere (b) contrassegnato come testo normale e usare la stessa indentazione di (a). È possibile farlo?

risposta

3

C'è un'opzione chunk interna indent che può aggiungere il rientro all'output del blocco. Nel tuo caso, puoi specificare quattro spazi, ad es.

#+ echo = TRUE, eval = TRUE, indent = ' ' 
3

è necessario utilizzare quello che viene chiamato The four-space rule nella documentazione: http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html#the-four-space-rule

Così il seguente codice funziona

(1) This is normal text. 

    Continued. 

    (a) This is normal text but indented. 

     ```{r, echo = TRUE, eval = TRUE} 
     summary(cars) 
     ``` 

    (a) This is normal text with the same indentation as (a). 

Nota: Ci sono

  • 2 spazio Infront il (1)
  • 4 spazio Infront di ciascuno (a)
  • 8 spazi Infront del codice di blocco

Con conseguente: enter image description here

ho eseguito utilizzando rmarkdown::render("test.Rmd") e questo è il mio informazioni sessione

R version 3.1.1 (2014-07-10) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 LC_MONETARY=German_Germany.1252 
[4] LC_NUMERIC=C     LC_TIME=German_Germany.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] digest_0.6.8 evaluate_0.5.5 formatR_1.0  htmltools_0.2.6 knitr_1.9  rmarkdown_0.5.1 
[7] stringr_0.6.2 tools_3.1.1  XML_3.98-1.1 yaml_2.1.13  
+0

Grazie. Non riesco a farlo funzionare quando compilo uno script 'R' direttamente con' render ("test.R", output_format = "pdf_document") '. –

+0

Il tuo file dovrebbe essere chiamato '* .Rmd' invece se' * .R' ma diverso da questo: Strano. Per me funziona perfettamente: Risultato in http://www.filedropper.com/test_50 – Rentrop

+0

'render()' può essere utilizzato anche per gli script 'R' puri e semplici, non solo per i file' * .Rmd' per i portatili . E con questo intendo uno script come [questo] (https://drive.google.com/open?id=0B_UAut69TSAic0ZvZC1qUlZDY28&authuser=0). È basato su 'spin()' che converte gli script di compilazione 'R' in file' * .Rmd' e questo è ciò di cui sto parlando. Una spiegazione può essere trovata [qui] (https://github.com/yihui/knitr/blob/master/inst/examples/knitr-spin.R). @Yihui, puoi aiutare? –

Problemi correlati