RMarkdown Officedown:将两个图像并排插入带有标题的 word 文档

RMarkdown Officedown: Insert two images side by side to word document with captions

如何将两张图片并排插入带有字幕的 word 文档 (.docx) 中?

我找到了几个 HTML 和 pdf 文档的解决方案。但是,对于word文档,好像不是这样的。

这是我的 YAML:

---
title: "Two images side by side"
output: officedown::rdocx_document
---

我知道下面的代码一般可以并排插入两张图片(不带字幕):

![](path to my picture/picture.jpg){width=300} ![](path to my picture/picture.jpg){width=300}

这个问题是我需要我通常使用的图形标题 include_graphics():

```{r, fig.cap = c("cap1", "cap2")}
include_graphics(c(" to my picture/picture.jpg", " to my picture/picture.jpg"))
`` 

对于 HTML 和 pdf 文档,我会在块中添加 fig.show = "hold" 以将它们并排堆叠。但是,对于 word 文档,这不会改变任何内容。

由于还没有人发表评论,我只是指出,作为一种变通方法,您可以使用两列布局(您还必须加载 officer 包以进行对齐)。要么将带有标题的图表放在单独的列中(如果它们具有相同的高度,这样效果很好),要么只在 side-by-side 图表下方添加标题,例如在第一个场景中是这样的:

<!---BLOCK_MULTICOL_START--->
![Caption 1](picture1.jpg){width=300}<caption>
![Caption 2](picture2.jpg){width=300}<caption>
<!---BLOCK_MULTICOL_STOP{widths: [3,3], space: 0.2, sep: true}--->

这也有效:

<!---BLOCK_MULTICOL_START--->
![Caption 1](picture1.jpg){width=300} <caption> ![Caption 2](picture2.jpg){width=300} 
<!---BLOCK_MULTICOL_STOP{widths: [3,3], space: 0.2, sep: true}--->

更多的解决方法是,对于不同高度的图像,您可以通过在图像下方打开 two-column 部分并手动添加标题文本来保持标题的垂直位置不变:

![](picture1.jpg){width=300} ![](picture2.jpg){width=300}
<!---BLOCK_MULTICOL_START--->
Caption 1`r fp_par(text.align = "center")`

<!---CHUNK_COLUMNBREAK--->
Caption 2`r fp_par(text.align = "center")`

<!---BLOCK_MULTICOL_STOP{widths: [3,3], space: 0.2, sep: true}--->

非常感谢,这很好用!

我什至可以在您的解决方案中使用 include_graphics(),这很好,因为它允许更多图像规范。

<!---BLOCK_MULTICOL_START--->

[```]{r, fig.cap = "cap1", fig.id = "id1", fig.dim = c(length, height)}
include_graphics("path to my picture/picture.jpg")
[```]

[```]{r, fig.cap = "cap2", fig.id = "id2", fig.dim = c(length, height)}
include_graphics("path to my picture/picture.jpg")
[```]

<!---BLOCK_MULTICOL_STOP{widths: [3.6,3.6]}--->

另一种方法是使用 ggplot2cowplot 包。 cowplot 需要安装 magick 但不一定要加载。

类似于 a RStudio community post 的示例,但图像不同:

library(cowplot)
library(ggplot2)

path1 <- "https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png"
path2 <- "https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png" # in this case, the image is identical
plot1 <- ggdraw() + draw_image(path1)
plot2 <- ggdraw() + draw_image(path2)
plot_grid(plot1, plot2) # output both plots

另一个 SO question 中包含一个更复杂的版本。