2012-03-20 10 views
5

Sto iniziando a utilizzare il pacchetto knitr come componente nel flusso di lavoro per produrre report HTML eda un file di input Markdown.
Vorrei impostare alcune opzioni del pacchetto knitr su misura per il formato del file di output. Attualmente mi passare manualmente avanti e indietro le seguenti due righe:knitr: come impostare le opzioni del pacchetto in base al tipo di output

<!--roptions dev='png', fig.width=300px, fig.height=200px" --> 
<!--roptions dev='pdf', fig.width=5, fig.height=4 --> 

E 'possibile lasciare che knitr sapere quale insieme di opzioni da utilizzare in base al tipo di uscita, automaticamente?

Grazie.

+0

È possibile utilizzare '' pandoc' con knitr' per la produzione di html e pdf dallo stesso file 'markdown'. Pubblicherò un esempio a breve. – Ramnath

+0

questo è anche quello che ho iniziato a fare di recente; puoi utilizzare la sezione 3.5 del manuale: https://github.com/downloads/yihui/knitr/knitr-manual.pdf (assegna variabili invece di valori fissi alle opzioni del tuo chunk) e credo che Ramnath possa mostrarti un buon flusso di lavoro. BTW, 'fig.width = 300px' non è valido; deve sempre essere numerico (unità in pollici): http://yihui.name/knitr/options –

+0

Grazie a Ramnath e @Yihui. Ho trovato una soluzione piuttosto maldestra lasciando che knitr crei le immagini in uno dei due formati (diciamo pdf). Quindi, in Makefile, converti tutte le immagini in png (ImageMagick), cerca le occorrenze di .pdf e sostituiscile con .png nel file a maglia (da sed), e infine esegui il pandoc in html. Questa è la parte rilevante di Makefile che ho trovato: html: knit \t convert Rplots/*. Pdf Rplots/*. Png \t sed 's/.pdf/.png/g' $ (DOCUMENTNAME) .md> $ (DocumentName) -html.md \t Pandoc -s -c --toc report.css $ (DocumentName) -html.md -o $ (DocumentName) .html \t rm $ (DocumentName) -html.md – mbask

risposta

2

@Ramnath commento suggerisce una solution a produrre pdf e html uscita da un unico file Markdown impostando opzioni specifiche per knitr nel Makefile:

$(PDF): $(SRC) Makefile 
Rscript \ 
    -e "library(knitr)" \ 
    -e "opts_chunk[['set']](dev = 'pdf')" \ 
    -e "pat_gfm()" \ 
    -e "knit('$<', 'temp.md')" 
$(PANDOC) temp.md -o [email protected] 
rm temp.md 

Ecco il formato delle immagini è impostato su pdf. Si noti che la funzione pat_gfm() è stata aggiunta nel ramo principale su GitHub solo 5 giorni fa e non è ancora stata rilasciata come versione stabile.

Elaborando un po 'di rispondere pienamente alla domanda, le dimensioni dell'immagine possono essere facilmente settati con l'aggiunta di un paio di righe al Makefile:

-e "opts_chunk[['set']](fig.width = 5)"\ 
-e "opts_chunk[['set']](fig.height = 5)"\ 
Problemi correlati