将一个单词样式(表格或段落)应用于flextable对象

7

我试图将 Word 样式(表格或段落)应用到 flextable 对象中。我这样做的原因是想找到一种方法,在通过 knitr 输出到 Word .docx 文档时,阻止 flextable 在页面断点处跨行分割。例如,在下面的代码中,我尝试将“图表目录”段落样式应用于 R markdown 中的 flextable:

---
title: " "
output:
  word_document: default
---



<div custom-style = "Table of Figures">
```{r, echo = F, message = F}
library(flextable)
library(magrittr)

head(cars) %>%
  regulartable

```
</div>

然而,这似乎不起作用。有人知道如何将表格和/或段落样式应用于flextable对象吗?


我不知道flextable是什么,但是我非常了解Word。在打开的Word文档中,flextable的结果是什么?一张简单的Word表格(行和列)吗? - Cindy Meister
2
这是一个长期存在的问题:没有一个真正好的方法来应用Word表格样式。如果你只有一个表格样式,那么很容易,但所有更灵活的东西似乎都不可能。 https://dev59.com/f2Mm5IYBdhLWcg3wHMJ0 - Dieter Menne
输出: word_document: reference_docx: docs/word-template.docx - Dieter Menne
@CindyMeister 是的,flextable包会在输出的Markdown文件中创建/插入一段MS Word(Open XML)代码块,然后Pandoc会将其直接插入到输出的MS Word文档中作为本地MS Word表格。但是,正如Dieter-Menne所指出的那样,似乎没有办法单独应用段落或表格样式到由Flextable插入的表格(或使用任何其他标准R-Markdown方法,据我们所知)。 - D. Woods
@Deiter-Menne 感谢您提供了另一个SO问题/答案的链接。我们目前正在使用reference_docx功能,但不知道可以通过这种方式分配表格样式。(很高兴链接的SO帖子有一些R代码来破解创建文档的XML,我们可能需要走这条路线。)不幸的是,我认为Flextable绕过了该功能,因为它直接将Open XML代码插入输出的MS Word文档中。因此,似乎没有办法让Flextable生成的表格接受MS Word段落或表格样式。 - D. Woods
2
FWIW,“找到一种方法阻止Flextable在页面断点处分裂”意味着将“允许行跨页”属性设置为False。在Word的Open XML中肯定有一个等效项-问题是这是否是“flextable”的一部分。从下面的“答案”中可以看出,有人可能刚刚将其添加到功能中...只是给您提供背景信息... - Cindy Meister
1个回答

3

抱歉,这不是 flextable 工作的方式。格式和属性由 flextable 函数(如 paddingalign 等)管理。

不过,我修改了渲染器,使得行在 Word 文档中不会跨页(您需要从 Github 更新 devtools::install_github("davidgohel/flextable"))。


必须有一种方法可以从Word模板中应用自定义字体。 - Alvaro Morales
争论一个在 Stack Overflow 上超过 3 年的答案有什么意义!然而,这并不是 flextable 的工作方式... - David Gohel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接