包 "officer" 中的 body_replace_all_text() 方法不起作用

Doesn't work body_replace_all_text() method in package "officer"

下面的代码不起作用

library(officer)
library(magrittr)

read_docx("/home/user/document.docx") %>%
  body_replace_all_text("placeholder1", "text1") %>%
  print(target = "/home/user/out.docx")

输出:

Found 0 instances of 'placeholder1' in the document.

但是如果我使用字符串 "tjsdhgudfhgku" 而不是 "placeholder1" 它会起作用。

document.docx:

tjsdhgudfhgku
placeholder1 blahblahblah
blah-blah

为什么会这样?

以下解释复制自该函数的帮助文件:

[...] 请注意,Word 文档中文本的幕后表示通常不是您所期望的!有时,由于样式更改、文本输入暂停、后期修订和编辑等原因,一段文本会被分解(或 "chunked")成几个 "runs,"。如果您没有为文本设置样式,并以 "all-at-once" 的方式输入,例如通过将其粘贴或以编程方式将其输出到您的 Word 文档中,那么这可能不是问题。但是,如果您使用的是手动编辑的文档,这可能会导致意外的查找文本失败。

您可以使用官方函数docx_show_chunk来显示当前光标处的文本段落是如何分块成行的,以及每个块中的文本是什么。这有助于解决意外的文本查找失败问题。 [...]