The section of the bookdown manual on generating figures演示了一个案例,其中include_graphics()
可以被赋予长度> 1的路径向量,产生一些具有单个标题的子图:
但是,当我在我的thesisdown的叉子中尝试这个时,在PDF输出中,我得到每个子图重复的图标题(并且,根据间距来判断,整个图形环境)。这是一个可重复的例子:
---
output: bookdown::pdf_document2
toc: false
---
```{r, echo = FALSE}
for(i in 1:3){
jpeg(filename = paste0("temp_", i, ".jpg"), width = 600, height = 250)
plot(cars)
title(main = i)
dev.off()
}
```
```{r fig.cap = "Caption", out.width="100%", fig.ncol = 1, echo = FALSE}
knitr::include_graphics(paste0("temp_", 1:3, ".jpg"))
```
我希望更多的是堆叠的五个图像,底部有一个标题。这也似乎打破了图形交叉引用,因为每个图都有自己的图形编号,并且对块的交叉引用呈现为??
。
获取子图需要在块头中设置一些额外的设置。
fig.subcap
是subfigures的标题列表fig.ncol
:subfigures的列数out.width
:数字的输出宽度。您通常会将此100%除以子列数。子图是使用subfig
包构建的。您可以将其包含在LaTeX bookdown模板中,也可以将其添加到YAML中,如下所示:
这是一个例子:
---
output: bookdown::pdf_document2
toc: false
header-includes:
- \usepackage{subfig}
---
```{r, echo = FALSE}
for(i in 1:3){
jpeg(filename = paste0("temp_", i, ".jpg"), width = 600, height = 250)
plot(cars)
title(main = i)
dev.off()
}
```
```{r fig.cap = "Caption", out.width="100%", fig.ncol = 1, echo = FALSE, fig.subcap= c("First", "Second", "Third")}
knitr::include_graphics(paste0("temp_", 1:3, ".jpg"))
```