the - Cómo convertir R Markdown a PDF?
r markdown the definitive guide pdf (8)
Respuesta actualizada (10 de febrero de 2013)
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'')"
Respuesta anterior (circa 2012)
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.
Usando 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:
- Eliminé la referencia en el archivo de ejemplo que exporta gráficos para imgur para alojar imágenes.
- Eliminé una referencia a una imagen alojada en imgur. Las figuras parecen necesitar ser locales.
- Las opciones en la función
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). - El resultado resultante se veía así. Claramente ha hecho un documento de estilo muy LaTeX en contraste con lo que obtengo si imprimo el archivo HTML a pdf desde un navegador.
Obtener la versión actualizada de Pandoc
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 .
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:
- Si convertir RMD a MD a HTML a PDF; o RMD a MD a PDF; o RMD a PDF
- Si usa el paquete de
markdown
en R, qué opciones especificar - Ya sea para usar
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 .
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 compilar desde las fuentes), 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 intento 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:
- Añadir tabla de contenido
- Cambiar las opciones de figura
- Cambiar estilo de resaltado de sintaxis
- Agregue opciones de LaTeX
- Y muchos más...
Para más detalles: http://rmarkdown.rstudio.com/pdf_document_format.html
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 rmarkdown renderización rmarkdown (como se mencionó anteriormente). Detalles completos de la secuencia de comandos here
#!/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))
}
}
}
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.
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 .
Solo dos pasos:
Instale la última versión "pandoc" desde aquí:
Llame a la función
pandoc
en lalibrary(knitr)
library(knitr) pandoc(''input.md'', format = ''latex'')
Por lo tanto, puede convertir su "input.md" en "input.pdf".