R flextable的标题不符合Word样式。

4
我正在使用officerflextable创建带标题的表格,用于导出到Word报告中。我将"Table Caption"设置为Word样式,导出的Word文档中确实将标题标识为"Table Caption"样式。然而,标题部分的文字并没有按照设定的Word样式进行。"Table #:"这部分是按照设定的样式,但是标题文字不是。标题文字显示为Arial字体。如果我通过set_flextable_options更改flextable字体,则标题文字将以该字体显示。

无论如何设置标题,即通过tab.captab.cap.style或通过set_caption,都会出现相同的结果。我创建了一个新的Word样式,以防默认的"Table Caption"有问题,并在tab.cap.style中使用它,但仍然发生相同的情况。它显示为设置为该样式,但不遵循样式的字体属性。"Table #:"这一部分的输出与预期相符。

示例:

---
title: "flextable caption example"
output:
   officedown::rdocx_document:
    reference_docx: ref.docx
---

```{r setup, include=FALSE}
library(officedown)
library(officer)
library(flextable)

knitr::opts_chunk$set(
  echo = FALSE,
  tab.cap.style = "Table Caption",
  tab.cap.pre = "Table",
  tab.cap.sep = ":")
```

```{r echo=FALSE, tab.cap="airquality dataset", tab.id="tab1"}
ft <- qflextable(head(airquality))
ft
``` 

图像已选择“空气质量数据集”。预期输出应该是整个标题都与“表1:”的样式相同。

enter image description here

我的搜索没有发现任何这个问题的实例,并且从遵循在线用户指南来看,我相信我正在正确地做。事实上,运行在线示例代码也会做同样的事情。
如果我漏掉了什么,请告诉我。或者如果有其他设置标题字体属性的方法而不是识别单词样式,请告诉我。
2个回答

1

我之前也遇到了同样的问题,但是在2022年11月18日重新安装flextable包后问题得到解决。现在,生成的Word文档中的图表标题和表格标题都正确地加粗显示。(重新安装还修复了我在正确分页时遇到的表格断页问题。)希望这可以帮到你!


非常感谢您的回答,它实际上解决了我的问题。为了更具体一些,我从flextable 0.6.6升级到了flextable 0.9.2 - Patrick
非常感谢您的回答,它实际上解决了我的问题。为了更具体一些,我从flextable 0.6.6升级到了flextable 0.9.2 - undefined

0
你应该改用bookdown::word_document2:,而不是officedown::rdocx_document:。只需将以下行添加到您的YAML =>
knit: "bookdown::render_book"
output: 
  bookdown::word_document2:
    reference_docx: "path/to_the/REFERENCE_DOCX.docx"
    

使用 bookdown::word_document2它应该可以正确运作,不论你是否:

A) 对段落使用全局参数(knitr::opts_chunk$set(tab.cap.style = "Table Caption")

B) 在单个代码块参数中添加 tab.cap.style = "Table Caption"{r echo=FALSE, tab.cap="airquality dataset", tab.cap.style = "Table Caption", tab.id="tab1"}

C) 或者在代码块内使用以下代码:

ft <- qflextable(head(airquality))

ft <- set_caption(ft, "airquality dataset",     
    style = "Table Caption", 
    autonum = run_autonum(seq_id = "tab", bkm = "tab1")) 
ft

我的所有软件包都是最新的。我个人的代码中没有qflextable,我只是在模仿在线文档。我要么使用flextable,要么使用gtsummary软件包中的as_flex_table,两者效果相同。我提到了这一点,但在原始帖子中没有添加完整的代码,但set_caption方法执行的是完全相同的操作。我还尝试了单个代码块选项,但没有变化。整个事情非常奇怪。 - Abigail
哇,我看到问题了。我已经编辑了我的回答 :) - Clément LVD
仍然做着同样的事情。我的意思是,我可以重新应用样式,因此这最终是一个可解决的问题。只是这太奇怪了,我不喜欢不明白为什么它不起作用,哈哈。 - Abigail

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