在 R 的 word 文档正文中的书签处添加一个 flextable
Add a flextable at a bookmark in the body of a word document from R
我正在尝试在 Word 文档正文中的特定书签处添加一个 flextable。到目前为止,我找到了以下选项:
- footers_flextable_at_bkm {灵活}
- headers_flextable_at_bkm {灵活}
- body_add_flextable {灵活}
但其中 none 正是我所需要的。
我尝试编写自己的代码来执行此操作(见下文),但它说找不到 docx_str
函数。 (我 coped/modified 此代码来自 headers_flextable_at_bkm
函数)。有没有人有办法做到这一点?或者它是一个可以添加到 flextable 包中的功能?
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_add_flextable(x, flextable)
命令之前添加 set_curser(x, bookmarkID)
。
为了保持一致性,将 body_flextable_at_bkm
作为 flextable 包的一部分仍然很好,因此它可以像 headers_flextable_at_bkm
和 footers_flextable_at_bkm
命令一样使用。
编辑:body_flextable_at_bkm
命令现在应该可以使用最新版本的软件包。
这个函数应该可以满足您的需求:
body_flextable_at_bkm <- function(x, bookmark, value){
x <- cursor_bookmark(x, bookmark)
x <- body_add_flextable(x = x, value = value, pos = "on")
x
}
我正在尝试在 Word 文档正文中的特定书签处添加一个 flextable。到目前为止,我找到了以下选项:
- footers_flextable_at_bkm {灵活}
- headers_flextable_at_bkm {灵活}
- body_add_flextable {灵活}
但其中 none 正是我所需要的。
我尝试编写自己的代码来执行此操作(见下文),但它说找不到 docx_str
函数。 (我 coped/modified 此代码来自 headers_flextable_at_bkm
函数)。有没有人有办法做到这一点?或者它是一个可以添加到 flextable 包中的功能?
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_add_flextable(x, flextable)
命令之前添加 set_curser(x, bookmarkID)
。
为了保持一致性,将 body_flextable_at_bkm
作为 flextable 包的一部分仍然很好,因此它可以像 headers_flextable_at_bkm
和 footers_flextable_at_bkm
命令一样使用。
编辑:body_flextable_at_bkm
命令现在应该可以使用最新版本的软件包。
这个函数应该可以满足您的需求:
body_flextable_at_bkm <- function(x, bookmark, value){
x <- cursor_bookmark(x, bookmark)
x <- body_add_flextable(x = x, value = value, pos = "on")
x
}