Solución:
Uno puede usar pdfpages
para incluir varias páginas de un archivo PDF a la vez. Sin embargo, estos se incluyen en páginas separadas. Si bien es posible agregar números de página, no puede colocar fácilmente estas imágenes en un figure
medio ambiente. Afortunadamente, includegraphics
tiene la opción de utilizar páginas individuales de un PDF. Desafortunadamente, knitr::include_graphics
no permite pasar argumentos adicionales a includegraphics
.
Aquí ambas posibilidades:
---
title: "crazy test"
output:
pdf_document
header-includes:
- usepackage{pdfpages}
---
```{r global_options, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos="h")
```
```{r, include=FALSE}
library(dplyr)
library(ggplot2)
library(tidyr)
library(purrr)
mydata <- data_frame(group = c('a', 'a', 'a', 'b', 'b', 'b'),
x = c(1,2,3,5,6,7),
y = c(3,5,6,4,3,2))
mydata2 <- mydata %>% group_by(group) %>%
nest() %>%
mutate(myplot = map(data, ~ggplot(data = .x, aes(x = x, y = x)) + geom_point()))
pdf("mychart.pdf")
print(mydata2$myplot)
dev.off()
```
## this is a test!!
Only first page
```{r label, out.width = "85%", fig.cap = "caption"}
knitr::include_graphics(path = "mychart.pdf")
```
All pages but w/o caption and taking a full page
includepdf[pages=-,nup=2,pagecommand={}]{mychart.pdf}
Alternative, using explicit LaTeX commands.
begin{figure}
includegraphics[page=1,width=0.5linewidth]{mychart.pdf}
includegraphics[page=2,width=0.5linewidth]{mychart.pdf}
caption{label{fig:test} Test.}
end{figure}
También se pueden poner estos en un fragmento R con cat()
y result="asis"
. Sin embargo, las opciones para configurar subtítulos, etc. aún no se utilizan.
Aquí está la solución Rmd con staplr. Tenga en cuenta que debe instalar pdftk para que split_pdf funcione
---
title: "crazy test"
output:
pdf_document
---
```{r global_options, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.pos="h")
```
## Split pdf
```{r}
staplr::split_pdf("mychart.pdf", output_directory = ".", prefix = "mychart_")
```
## Add pdfs
```{r label, out.width = "85%", fig.cap = c("caption 1", "caption 2"), echo = FALSE}
flist <- list.files()
mychart_files <- flist[grep("mychart_", flist)]
knitr::include_graphics(mychart_files)
```
Además, incluir gráficos no funciona en un bucle. Pero acepta múltiples rutas, por lo que funciona bien.