【问题标题】:Subplots in bookdown repeating the captionbookdown 中的子图重复标题
【发布时间】:2018-02-12 01:42:28
【问题描述】:

The section of the bookdown manual on generating figures 演示了一个例子,其中include_graphics() 可以被赋予一个长度 > 1 的路径向量,从而产生多个带有单个标题的子图:

但是,当我在 thesisdown 的 fork 中尝试此操作时,在 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"))
```

我希望堆叠的五张图片更多,底部有一个标题。这似乎也破坏了图形交叉引用,因为每个图都有自己的图形编号,并且对块渲染的交叉引用为??

【问题讨论】:

  • 添加了一个可重现的示例:使用 rmarkdown/bookdown 会更难,但通常是可能的 :)

标签: r r-markdown bookdown


【解决方案1】:

获取子图需要在块头中设置一些额外的设置。

  • fig.subcap 是子图的标题列表
  • fig.ncol: 子图的列数
  • 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"))
```

【讨论】:

  • 谢谢,这完美!你是否碰巧知道 position 参数是否从 subfig1 is supported to move the subcaptions above their respective figures? I tried supplying fig.position = 'top'` 到块,但没有骰子。
  • 您可能不得不更改subfig 包的设置并在文档中添加一些LaTeX。在此处查看包:mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/subfig/…。如果你不能解决可能值得提出另一个问题
  • usepackage 命令中传递参数起到了作用:\usepackage[position=top]{subfig}
猜你喜欢
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2018-11-27
  • 2012-05-29
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多