在 R 中的 Word 文档正文中的书签处添加弹性表



我正在尝试在Word文档正文中的特定书签处添加一个弹性表。到目前为止,我找到了以下选项:

  • footers_flextable_at_bkm {弹性表}
  • headers_flextable_at_bkm {弹性表}
  • body_add_flextable {弹性表}

但他们都没有完全满足我的需求。

我尝试编写自己的代码来执行此操作(见下文(,但它说找不到docx_str函数。(我从headers_flextable_at_bkm函数中复制/修改了此代码(。有人有办法做到这一点吗?或者它是一个可以添加到柔性包装中的功能?

body_flextable_at_bkm <- function(x, bookmark, value){
stopifnot(inherits(x, "rdocx"), inherits(value, "flextable"))
str <- docx_str(value, doc = x, align = "center")
xml_elt <- as_xml_document(x)
for(doc_obj in x$body){
if( doc_obj$has_bookmark(bookmark) ){
doc_obj$cursor_bookmark(bookmark)
cursor_elt <- doc_obj$get_at_cursor()
xml_replace(cursor_elt, xml_elt)
}
}
}

此函数应执行您需要的操作:

body_flextable_at_bkm <- function(x, bookmark, value){ x <- cursor_bookmark(x, bookmark) x <- body_add_flextable(x = x, value = value, pos = "on") x }

经过更多的挖掘,有一个解决方法,您可以在body_add_flextable(x, flextable)命令之前添加set_curser(x, bookmarkID)

为了保持一致性,将body_flextable_at_bkm作为可灵活包的一部分仍然很好,这样它就可以像headers_flextable_at_bkmfooters_flextable_at_bkm命令一样使用。

编辑:body_flextable_at_bkm命令现在应该适用于最新版本的软件包。

最新更新