Anteriormente le pregunté sobre los comandos para convertir R Markdown a HTML .
¿Cuál es una buena forma de convertir archivos R Markdown a documentos PDF?
Una buena solución preservaría la mayor cantidad posible del contenido (por ejemplo, imágenes, ecuaciones, tablas html, etc.). La solución debe poder ejecutarse desde la línea de comandos. Una buena solución también sería multiplataforma e idealmente minimizaría las dependencias para facilitar el intercambio de archivos make y demás.
Específicamente, hay muchas opciones:
markdown
en R, qué opciones especificar pandoc
, un paquete integrado en R o algo más Aquí hay un archivo rmd de ejemplo que presumiblemente proporciona una prueba razonable de cualquier solución propuesta. Fue utilizado como base para esta publicación de blog .
paquete rmarkdown : ahora hay un paquete rmarkdown
disponible en github que interactúa con Pandoc. Incluye una función de render
. La documentación deja bastante claro cómo convertir rmarkdown a pdf entre una gama de otros formatos. Esto incluye incluir formatos de salida en el archivo rmarkdown o ejecutar el suministro de un formato de salida a la función rend. P.ej,
render("input.Rmd", "pdf_document")
Línea de comando: cuando ejecuto el render
desde la línea de comandos (por ejemplo, usando un archivo MAKE), a veces tengo problemas con la búsqueda de pandoc. Presumiblemente, no está en la ruta de búsqueda. La siguiente respuesta explica cómo agregar Pandoc al entorno R.
Entonces, por ejemplo, en mi computadora que ejecuta OSX, donde tengo una copia de pandoc a través de RStudio, puedo usar lo siguiente:
Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown); library(utils); render('input.Rmd', 'pdf_document')"
Entonces, varias personas han sugerido que Pandoc es el camino a seguir. Consulte las notas a continuación sobre la importancia de tener una versión actualizada de Pandoc.
Utilicé el siguiente comando para convertir R Markdown a HTML (es decir, una variante de este archivo MAKE ), donde RMDFILE
es el nombre del archivo R Markdown sin el componente .rmd
(también supone que la extensión es .rmd
y no .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'))"
y luego este comando para convertir a pdf
Pandoc -s example-r-markdown.html -o example-r-markdown.pdf
Algunas notas sobre esto:
markdownToHTML
significaban que las referencias de imágenes son a archivos y no a datos almacenados en el archivo HTML (es decir, 'base64_images'
de la lista de opciones). Como lo menciona @daroczig, es importante tener una versión actualizada de Pandoc para generar pdfs. En Ubuntu, a partir del 15 de junio de 2012, me quedé con la versión 1.8.1 de Pandoc en el administrador de paquetes, pero parece que desde el registro de cambios, para soporte de PDF necesita al menos la versión 1.9+ de Pandoc.
Por lo tanto, instalé caball-install
. Y luego corrió:
cabal update cabal install pandoc
Pandoc se instaló en ~/.cabal/bin/pandoc
Por ~/.cabal/bin/pandoc
tanto, cuando ejecuté pandoc
todavía estaba viendo la versión anterior. Vea aquí para agregar a la ruta .
Creo que realmente necesitas Pandoc , que fue diseñado y construido para esta tarea. Además de PDF , podrías convertir tu archivo md a, por ejemplo, docx u odt entre otros.
Bueno, la instalación de una versión actualizada de Pandoc puede ser un reto para Linux (ya que necesitaría toda haskell-platform
haskell ˙ para comstackr desde las fonts), pero realmente fácil en Windows / Mac con solo unos pocos megabytes de descarga.
Si tiene el archivo de descuento fabricado / tejido, puede simplemente llamar a pandoc
en eg bash o con la función del system
dentro de R. Una demo POC de este último se implementa en la función Ṗandoc.convert
de mi pequeño paquete ( que debe estar terriblemente aburrido) de como bash señalar su atención allí en cada oportunidad ).
En este momento (agosto de 2014) Puede usar RStudio para convertir R Markdown en PDF. Básicamente, RStudio usa pandoc para convertir Rmd a PDF.
Podrías cambiar los metadatos a:
Para más detalles: http://rmarkdown.rstudio.com/pdf_document_format.html
Para una opción que se parece más a lo que obtiene cuando imprime desde un navegador, wkhtmltopdf
ofrece una opción.
En Ubuntu
sudo apt-get install wkhtmltopdf
Y luego el mismo comando que para el ejemplo de pandoc para llegar al 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'))"
y entonces
wkhtmltopdf example-r-markdown.html example-r-markdown.pdf
El archivo resultante se veía así. No parecía manejar MathJax ( este tema se trata aquí ), y los saltos de página son feos. Sin embargo, en algunos casos, tal estilo podría preferirse a una presentación de estilo más LaTeX.
Solo dos pasos:
Instale la última versión “pandoc” desde aquí:
Llame a la función pandoc
en la library(knitr)
library(knitr) pandoc('input.md', format = 'latex')
Por lo tanto, puede convertir su “input.md” en “input.pdf”.
Encontré usar R studio de la manera más fácil, pero si quiero controlar desde la línea de comando, entonces un simple guión R puede hacer el truco usando el comando de renderización rmarkdown (como se mencionó anteriormente). Detalles completos de la secuencia de comandos aquí
#!/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)) } } }
Si no desea instalar nada, puede generar html. A continuación, abra el archivo html: debería abrirse en una ventana del navegador y luego hacer clic con el botón derecho para imprimir. En la ventana de impresión, seleccione “guardar como PDF” en la esquina inferior derecha si está en una Mac. Voila!
Sigue estos simples pasos:
1: En la secuencia de comandos de Rmarkdown, ejecute Knit (Ctrl + Shift + K) 2: Luego, después de abrir la marca html, haga clic en Abrir en el navegador (parte superior izquierda) y se abrirá el html en su navegador web 3: Luego, use Ctrl + P y Guardar como pdf .