【问题标题】:How do I Use Tab Stops in MSWord Documents Created in R?如何在 R 中创建的 MSWord 文档中使用制表位?
【发布时间】:2022-04-28 18:37:19
【问题描述】:

背景与目的

我正在使用 officer 包在 MSWord 中生成格式化的逐项详细信息集合(类似于目录)。

集合中的每个项目都有一个标题,然后是每个定义的详细信息的行。

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

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

制表位由作为模板引用的现有 MSWord 文档中的段落样式定义。模板文件是空的,但包含我们需要的样式定义。(注意:我无法发布 Word 文件 - 请参阅帖子末尾以了解创建最小可复制 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 的内容。

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

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

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

问题:

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

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


为测试创建一个简单的可重现模板

  • 打开一个新的 MSWord 文档
  • 键入一些内容(您的标签)
  • 将光标放在同一行,设置制表位(有关创建制表位的步骤,请参阅here
  • 在制表位处键入更多内容(您的值)
  • 选择线条并定义样式
  • 从主页功能区,展开样式菜单并选择“创建样式”,输入您的样式名称(这是...body_add("your string", style = "your style name") 中使用的名称
  • 点击“确定”
  • 从文件中删除所有内容并将其保存在工作目录中。

【问题讨论】:

    标签: r officer


    【解决方案1】:

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

    我在这里发布了模板: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:	doudou	bleu"), style = "NormalPlusTabs") %>% 
      print(target = "test.docx")
    
    

    【讨论】:

      【解决方案2】:

      答案是使用 来表示选项卡。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多