修改xml_document in officer in R

Modify xml_document in officer in R

我有一个 rdocx,我想在 xml 代码中操作一些东西。那是我的文档:

library(officer)

doc <- read_docx() %>%
  body_add_par("centered text", style = "centered") %>%
  slip_in_seqfield("STYLEREF 1 \s") %>% 
  slip_in_text("\u2011") %>% 
  slip_in_seqfield(sprintf("SEQ %s \* ARABIC \s 1", "Table")) %>% 
  slip_in_text(str_c(": ", "My Caption")) %>% 
  body_bookmark("my_bookmark")

使用 doc$doc_obj$get() 我可以使用 类 xml_documentxml_node 获得 xml 代码。现在我想替换一些代码,详细地说我希望带有 w:bookmarkEnd 的部分稍后出现,以便书签部分变大。我怎样才能做到这一点?如果我能用 str_replace 实现这一点,那就太棒了。

您可以使用 run_bookmark(),如下例所示(手册未说明支持列表,我会尽快添加该信息):

library(officer)

bkm <- run_bookmark(
  bkm = "test",
  list(
    run_word_field(field = "SEQ tab \* ARABIC \s"),
    ftext(" Table", prop = fp_text_lite(color = "red"))
  )
)
doc <- read_docx()

doc <- body_add_fpar(
  x = doc,
  value = fpar(bkm)
)

# how to make a reference to the bkm
doc <- body_add_fpar(
  x = doc,
  value = fpar(run_reference("test"))
)

print(doc, "zz.docx")