如何在用 R 创建的 MSWord 文档中使用制表位?

How do I Use Tab Stops in MSWord Documents Created in R?

背景和Objective

我正在使用 officer 程序包在 MSWord 中生成格式化的 collection 详细信息(类似于目录)。

collection 中的每个项目都有一个 header,后跟一行用于每个定义的详细信息。

每一行(header 或详细信息)都有一个标签,后跟一个制表符,然后是值。

例如:Item #001 <w: tab\> The Name of the First Item

制表位由作为模板引用的现有 MSWord 文档中的段落样式定义。模板文件是空的,但包含我们需要的样式定义。 (注意:我不能 post Word 文件 - 请参阅 post 末尾以了解创建最低限度可重现的 MSWord 模板文档的步骤;但是,挑战似乎在于如何处理制表符officer.)

R中,我生成的内容如下:

library(officer)

# Open an MSWord document containing the style definitions
doc <- read_docx("my_template.docx")

# Add the Header
doc <- doc %>% body_add_par("Item #001: The first item", style = "Equip Header")

# Add some details
doc <- doc %>% body_add_par("QUANTITY:<w:tab/>One (1)", style = "Equip Detail")
doc <- doc %>% body_add_par("PROVIDED BY:  K.E.C.", style = "Equip Detail")
doc <- doc %>% body_add_par("PROVIDED BY:  &#9; K.E.C.", style = "Equip Detail")
#... and so on ...

# save the file
print(doc, target = "test.docx")

请注意,在第一个详细信息项中,我为选项卡添加了 Word xml 标记,在第二个详细信息项中,我在值字符串中使用了制表符(使用制表键),并且在第三个中,我使用 html 字符作为水平制表符。

除选项卡外,脚本按预期工作。这是保存到test.docx.

的内容

如图所示,段落样式中仍存在制表位,但 label/value 集的“值”部分未被制表符覆盖。我们可以在图像中看到第一个和第三个选项卡被视为转义字符串。在第二项中,制表符被视为两个空格。

这是设计使然。 body_add 函数转义特殊字符。这样,“>”变成“&lt;”,“&#9;”变成“&amp;#09;

这是使用制表符/制表位时的样子。

问题:

如何在 MSWord 中生成使用 MSWord 段落样式、尊重制表位并保留在字符串中使用制表符的内容?

我对其他 r 软件包/解决方案持开放态度


创建用于测试的简单可复制模板

答案是用\t表示tab

这可以用'\t'来完成。您定义模板的方式是正确的。 您还可以在段落属性框中定义表格的位置。

我在这里发布了模板:https://github.com/davidgohel/officer/files/8581914/template.docx

library(officer)
library(dplyr)

doc <- read_docx(path = "template.docx")
styles_info(doc, type = "paragraph") %>% 
  filter(style_name %in% "NormalPlusTabs")
doc %>% 
  body_add_fpar(fpar("Name:\tdoudou\tbleu"), style = "NormalPlusTabs") %>% 
  print(target = "test.docx")