如何解决gt生成带标题的docx时出现的外部引用域弹窗问题?
解决gt/gtsummary生成带标题docx时的域更新弹窗问题
问题根源
使用tab_header()给表格添加标题时,gt包会将标题转换为Word的域对象,这就是打开文档时弹出「此文档包含可能引用其他文件的域。是否要更新文档中的域?」提示的原因;而无标题的表格没有这类域,所以不会触发提示。
解决方案
方案1:改用gt原生标题参数(推荐)
不用tab_header(),在as_gt()中直接通过title参数设置标题,生成的标题是普通文本,不会产生域对象:
library(tidyverse) library(gt) library(gtsummary) trial %>% tbl_summary(include = c(age, grade, response)) %>% as_gt(title = "Title here") %>% gtsave("test_title_fixed.docx")
方案2:用officer清除文档域(适合必须用tab_header的场景)
如果一定要保留tab_header()的使用,可以借助officer包手动清除生成文档中的所有域:
library(tidyverse) library(gt) library(gtsummary) library(officer) # 生成带标题的原始docx trial %>% tbl_summary(include = c(age, grade, response)) %>% as_gt() %>% tab_header("Title here") %>% gtsave("test_title.docx") # 读取文档并清除所有域 doc <- read_docx("test_title.docx") doc <- body_remove_all_fields(doc) print(doc, target = "test_title_fixed.docx")
效果验证
两种方法生成的docx文件打开时,均不会弹出域更新提示。
内容的提问来源于stack exchange,提问作者adts
相关产品推荐
相关产品推荐

