Ho chiesto in precedenza i comandi per convertire R Markdown in HTML .
Qual è un buon modo per convertire i file R Markdown in documenti PDF?
Una buona soluzione preserverebbe il più ansible il contenuto (ad es. Immagini, equazioni, tabelle html, ecc.). La soluzione deve essere in grado di essere eseguita dalla riga di comando. Una buona soluzione sarebbe anche cross-platform e idealmente ridurre al minimo le dipendenze per rendere più facile la condivisione dei makefile e così via.
Nello specifico, ci sono molte opzioni:
markdown
in R, quali opzioni specificare pandoc
, un pacchetto incorporato in R o qualcos’altro Ecco un esempio di file rmd che presumibilmente fornisce un test ragionevole di qualsiasi soluzione proposta. È stato usato come base per questo post sul blog .
pacchetto rmarkdown : ora è disponibile un pacchetto rmarkdown
su github che si interfaccia con Pandoc. Include una funzione di render
. La documentazione rende abbastanza chiaro come convertire rmarkdown in pdf in una serie di altri formati. Ciò include l’inclusione dei formati di output nel file rmarkdown o l’esecuzione di un formato di output per la funzione rend. Per esempio,
render("input.Rmd", "pdf_document")
Riga di comando: quando eseguo il render
dalla riga di comando (ad esempio, utilizzando un makefile), a volte ho problemi con pandoc che non viene trovato. Presumibilmente, non è sul percorso di ricerca. La seguente risposta spiega come aggiungere pandoc all’ambiente R.
Quindi, per esempio, sul mio computer con OSX, dove ho una copia di pandoc tramite RStudio, posso usare quanto segue:
Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown); library(utils); render('input.Rmd', 'pdf_document')"
Quindi, un numero di persone ha suggerito che Pandoc è la strada da percorrere. Vedere le note seguenti sull’importanza di avere una versione aggiornata di Pandoc.
Ho usato il seguente comando per convertire R Markdown in HTML (cioè, una variante di questo makefile ), dove RMDFILE
è il nome del file R Markdown senza il componente .rmd
(presuppone anche che l’estensione sia .rmd
e non .Rmd
).
RMDFILE=example-r-markdown Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"
e poi questo comando per convertire in pdf
Pandoc -s example-r-markdown.html -o example-r-markdown.pdf
Alcune note su questo:
markdownToHTML
significavano che i riferimenti alle immagini riguardano i file e non i dati memorizzati nel file HTML (cioè, ho rimosso 'base64_images'
dall’elenco delle opzioni). Come accennato da @daroczig, è importante avere una versione aggiornata di Pandoc per l’output dei pdf. Su Ubuntu a partire dal 15 giugno 2012, sono rimasto bloccato con la versione 1.8.1 di Pandoc nel gestore pacchetti, ma dal log delle modifiche sembra che per il supporto pdf sia necessaria almeno la versione 1.9+ di Pandoc.
Pertanto, ho installato caball-install
. E poi ha funzionato:
cabal update cabal install pandoc
Pandoc è stato installato in ~/.cabal/bin/pandoc
Quindi, quando ho eseguito pandoc
, continuava a vedere la versione precedente. Vedi qui per aggiungere al percorso .
Penso che tu abbia davvero bisogno di pandoc , quale ottimo software è stato progettato e realizzato proprio per questo compito 🙂 Oltre al pdf , puoi convertire il tuo file md ad es. Docx o odt, tra gli altri.
Beh, installare una versione aggiornata di Pandoc potrebbe essere una sfida su Linux (come avresti bisogno dell’intera haskell-platform
haskell ˙ per creare dai sorgenti), ma davvero facile su Windows / Mac con solo pochi megabyte di download.
Se hai il file pandoc
preparato / lavorato puoi semplicemente chiamare pandoc
ad esempio bash o con la funzione di system
in R. Una demo POC di quest’ultimo è implementata nella funzione Ṗandoc.convert
del mio piccolo pacchetto ( che devi essere terribilmente annoiato di come cerco di indicare la tua attenzione lì in ogni occasione ).
Al momento (agosto 2014) è ansible utilizzare RStudio per convertire R Markdown in PDF. Fondamentalmente, RStudio usa pandoc per convertire Rmd in PDF.
È ansible modificare i metadati in:
Per maggiori dettagli: http://rmarkdown.rstudio.com/pdf_document_format.html
Per un’opzione che assomiglia di più a ciò che si ottiene stampando da un browser, wkhtmltopdf
offre un’opzione.
Su Ubuntu
sudo apt-get install wkhtmltopdf
E poi lo stesso comando per l’esempio pandoc per arrivare all’HTML:
RMDFILE=example-r-markdown Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"
e poi
wkhtmltopdf example-r-markdown.html example-r-markdown.pdf
Il file risultante sembrava così. Non sembrava gestire MathJax ( questo problema è discusso qui ) e le interruzioni di pagina sono brutte. Tuttavia, in alcuni casi, uno stile simile potrebbe essere preferito a una presentazione in stile LaTeX.
Solo due passaggi:
Installa l’ultima versione “pandoc” da qui:
Chiama la funzione pandoc
nella library(knitr)
library(knitr) pandoc('input.md', format = 'latex')
Pertanto, puoi convertire il tuo “input.md” in “input.pdf”.
Ho trovato l’uso di R Studio nel modo più semplice, ma se vuoi controllare dalla riga di comando, allora un semplice script R può fare il trucco usando il comando rmarkdown render (come menzionato sopra). Dettagli completi di script qui
#!/usr/bin/env R # Render R markdown to PDF. # Invoke with: # > R -q -f make.R --args my_report.Rmd # load packages require(rmarkdown) # require a parameter naming file to render if (length(args) == 0) { stop("Error: missing file operand", call. = TRUE) } else { # read report to render from command line for (rmd in commandArgs(trailingOnly = TRUE)) { # render Rmd to PDF if ( grepl("\\.Rmd$", rmd) && file.exists(rmd)) { render(rmd, pdf_document()) } else { print(paste("Ignoring: ", rmd)) } } }
Se non vuoi installare nulla, puoi generare html. Quindi apri il file html: dovrebbe aprirsi in una finestra del browser, quindi fare clic con il pulsante destro del mouse per stampare. Nella finestra di stampa, seleziona “salva come pdf” nell’angolo in basso a destra se sei su un Mac. Ecco!
Segui questi semplici passaggi:
1: nello script Rmarkdown esegui Knit (Ctrl + Shift + K) 2: Quindi dopo che il markdown html è stato aperto fai clic su Apri nel browser (in alto a sinistra) e l’html è aperto nel tuo browser 3: Quindi usa Ctrl + P e salva come PDF.