如何在 R markdown (bookdown) 中添加子图

Use*_*014 5 r knitr r-markdown bookdown

我正在尝试在 R bookdown 项目中添加带有子标题的图形,如下所示

---
output:
  pdf_document:
    extra_dependencies: "subfig"
---
     
```{r  echo=F, out.width = "50%",fig.showtext=TRUE,fig.show='hold',fig.cap="TITULO"}
par(mfrow=c(1,2))
knitr::include_graphics("ts_mult.png") 
knitr::include_graphics("ts_ad.png") 
```
Run Code Online (Sandbox Code Playgroud)

我得到以下结果

在此输入图像描述

然后我尝试添加子标题(“imagen a”,“imagen b”),如下所示

```{r  echo=F, out.width = "50%",fig.showtext=TRUE,fig.show='hold',fig.cap="TITULO",fig.subcap=c("imagen a", "imagen b")}
par(mfrow=c(1,2))
knitr::include_graphics("ts_mult.png") 
knitr::include_graphics("ts_ad.png") 
```
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并引发以下错误

! Undefined control sequence.
<recently read> \subfloat 

Error: LaTeX failed to compile Tesis_AE.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips.
Run Code Online (Sandbox Code Playgroud)

如何正确添加子标题?

Car*_*era 7

您只需添加fig.subcap=c("A subtitle","Another subtitle")块即可。

\n

至少在我的环境中,这fig.showtext=TRUE是不必要的,而且这会导致错误:Error in loadNamespace(name) : there is no package called \'showtext\' Calls: <Anonymous> ... loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart Execution halted。这就是为什么我在答案中排除了该设置。

\n
---\noutput:\n  pdf_document:\n    extra_dependencies: "subfig"\n    keep_tex: yes\n---\n     \n```{r echo=F, out.width = "50%",fig.show=\'hold\',fig.cap="TITULO", fig.subcap=c("Subtitulo1","Subtitulo2")}\npar(mfrow=c(1,2))\nknitr::include_graphics("your-path-to/image1.png") \nknitr::include_graphics("your-path-to/image2.png") \n```\n
Run Code Online (Sandbox Code Playgroud)\n

会议信息

\n
> sessionInfo()\nR version 4.0.2 (2020-06-22)\nPlatform: x86_64-w64-mingw32/x64 (64-bit)\nRunning under: Windows 10 x64 (build 18362)\n\nMatrix products: default\n\nlocale:\n[1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932\n[4] LC_NUMERIC=C                   LC_TIME=Japanese_Japan.932    \n\nattached base packages:\n[1] stats     graphics  grDevices utils     datasets  methods   base     \n\nloaded via a namespace (and not attached):\n[1] compiler_4.0.2 tools_4.0.2   \n\n> rmarkdown::pandoc_version()\n[1] \xe2\x80\x982.7.3\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

  • 嗯,这很奇怪,因为我的环境与你的相同,我无法复制你的错误。你在 tex 文件中找到了 `\usepackage{subfig}` 吗? (3认同)
  • @User2014您可以用我更新的答案(`keep_tex:yes`)重试并将您的tex文件添加到原始问题中吗?我们需要查看`subfig`包是否真的被加载。最好告诉您的 R 和 Pandoc 版本(为此,请先运行 `sessionInfo(); rmarkdown::pandoc_version()` )。 (2认同)
  • 该包不在主 tex 文件中,但是它已解决,我必须在 preamble.tex 文件中添加 \usepackage{subfig} ,感谢您的建议。 (2认同)