【问题标题】:How to add subfigure in R markdown (bookdown)如何在 R markdown 中添加子图(bookdown)
【发布时间】:2020-12-19 06:15:24
【问题描述】:

我正在尝试在 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") 
```

我得到以下结果

然后我尝试如下添加子标题(“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") 
```

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

! Undefined control sequence.
<recently read> \subfloat 

Error: LaTeX failed to compile Tesis_AE.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips.

如何正确添加子字幕?

【问题讨论】:

    标签: r r-markdown knitr bookdown


    【解决方案1】:

    你只需要在块中添加fig.subcap=c("A subtitle","Another subtitle")

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

    ---
    output:
      pdf_document:
        extra_dependencies: "subfig"
        keep_tex: yes
    ---
         
    ```{r echo=F, out.width = "50%",fig.show='hold',fig.cap="TITULO", fig.subcap=c("Subtitulo1","Subtitulo2")}
    par(mfrow=c(1,2))
    knitr::include_graphics("your-path-to/image1.png") 
    knitr::include_graphics("your-path-to/image2.png") 
    ```
    

    会话信息

    > sessionInfo()
    R version 4.0.2 (2020-06-22)
    Platform: x86_64-w64-mingw32/x64 (64-bit)
    Running under: Windows 10 x64 (build 18362)
    
    Matrix products: default
    
    locale:
    [1] LC_COLLATE=Japanese_Japan.932  LC_CTYPE=Japanese_Japan.932    LC_MONETARY=Japanese_Japan.932
    [4] LC_NUMERIC=C                   LC_TIME=Japanese_Japan.932    
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    
    loaded via a namespace (and not attached):
    [1] compiler_4.0.2 tools_4.0.2   
    
    > rmarkdown::pandoc_version()
    [1] ‘2.7.3’
    

    【讨论】:

    • 这正是我尝试过的,但是当尝试运行代码时,它会抛出我在问题中描述的错误 (!未定义的控制序列。 \subfloat )
    • @User2014 您能否使用我更新的答案 (keep_tex: yes) 重试并将您的 tex 文件添加到原始问题中?我们需要查看subfig 包是否真的被加载。告诉您的 R 和 Pandoc 版本也很好(为此,请先运行 sessionInfo(); rmarkdown::pandoc_version())。
    • 嗯,这很奇怪,因为我的环境和你的一样,我无法复制你的错误。你在 tex 文件中找到\usepackage{subfig} 了吗?
    • 包不在主tex文件中,但是已经解决了,我不得不在preamble.tex文件中添加\usepackage{subfig},谢谢你的建议。
    • 很高兴听到您的成功!如果你觉得这个答案值得,你可以点击接受标记!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2022-01-18
    • 2020-11-30
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多