有没有一种方法可以使用 RMarkdown 在 PowerPoint 幻灯片上自动定位和调整可弯曲对象?
Is there a way to automatically position and fit a flextable object on a PowerPoint slide using RMarkdown?
问题
当我使用 RMarkdown 生成要打印到 PowerPoint 幻灯片的 flextable 对象时,RMarkdown 只是...在幻灯片上抛出 table。
```{r example}
tibble(
COL_1 = seq(1, 25),
COL_2 = seq(1, 25),
COL_3 = seq(1, 25),
COL_4 = seq(1, 25),
COL_5 = seq(1, 25)
) |>
qflextable() |>
add_footer_row(values = "This is some example text just to highlight what gets lost in normal formatting.", colwidths = 5)
```
使用上面的代码,我最终得到这样的结果:
我想要的
理想情况下,我希望我的 table 位于幻灯片的中央并设置适合的格式,如下所示:
有没有人对我如何在不手动编辑 PowerPoint 幻灯片的情况下获得所需结果有任何建议?
注意 但没有收到可行的答案。
您可以使用“officedown”来实现。但这需要一些计算。首先知道幻灯片尺寸(office::slide_size()
),然后是可伸缩尺寸(flextable_dim()
),最后计算 PowerPoint 将使用的左侧和顶部位置。
Flextable 可以使用 knitr 块参数 ft.left
和 ft.top
.
定位在幻灯片中
以下为速解说明
---
output:
officedown::rpptx_document:
reference_doc: template_demo.pptx
---
```{r include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(officedown)
library(officer)
library(flextable)
library(magrittr)
sl_size <- read_pptx("template_demo.pptx") %>%
add_slide(layout = "Title and Content", master = "Office Theme") %>%
slide_size()
s_w <- sl_size$width
s_h <- sl_size$height
ft <- flextable(head(iris)) %>%
fontsize(size = 18, part = "all") %>%
theme_vader() %>%
autofit()
ft_dim <- flextable_dim(ft)
left <- (s_w/2) - (ft_dim$widths/2)
top <- (s_h/2) - (ft_dim$heights/2)
```
```{r ft.left=left, ft.top=top}
ft
```
问题
当我使用 RMarkdown 生成要打印到 PowerPoint 幻灯片的 flextable 对象时,RMarkdown 只是...在幻灯片上抛出 table。
```{r example}
tibble(
COL_1 = seq(1, 25),
COL_2 = seq(1, 25),
COL_3 = seq(1, 25),
COL_4 = seq(1, 25),
COL_5 = seq(1, 25)
) |>
qflextable() |>
add_footer_row(values = "This is some example text just to highlight what gets lost in normal formatting.", colwidths = 5)
```
使用上面的代码,我最终得到这样的结果:
我想要的
理想情况下,我希望我的 table 位于幻灯片的中央并设置适合的格式,如下所示:
有没有人对我如何在不手动编辑 PowerPoint 幻灯片的情况下获得所需结果有任何建议?
注意
您可以使用“officedown”来实现。但这需要一些计算。首先知道幻灯片尺寸(office::slide_size()
),然后是可伸缩尺寸(flextable_dim()
),最后计算 PowerPoint 将使用的左侧和顶部位置。
Flextable 可以使用 knitr 块参数 ft.left
和 ft.top
.
以下为速解说明
---
output:
officedown::rpptx_document:
reference_doc: template_demo.pptx
---
```{r include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(officedown)
library(officer)
library(flextable)
library(magrittr)
sl_size <- read_pptx("template_demo.pptx") %>%
add_slide(layout = "Title and Content", master = "Office Theme") %>%
slide_size()
s_w <- sl_size$width
s_h <- sl_size$height
ft <- flextable(head(iris)) %>%
fontsize(size = 18, part = "all") %>%
theme_vader() %>%
autofit()
ft_dim <- flextable_dim(ft)
left <- (s_w/2) - (ft_dim$widths/2)
top <- (s_h/2) - (ft_dim$heights/2)
```
```{r ft.left=left, ft.top=top}
ft
```