【问题标题】:Mutliple formatted text on pptx by using officer package on Rppt中的多种格式文本,使用R中的officer包
【发布时间】:2019-06-25 04:51:09
【问题描述】:

喏,

我正在编写代码以使用官员包生成自动报告。我想知道如何以及是否可以用不同的字体编写一些文本。就我而言,我想写一些普通的文字和一些粗体字。

让我告诉你我得到了什么。我使用这些函数来生成 fp_text 对象:

fp_normal <- function(){
return( fp_text(color = "black", font.size = 16,
        bold = FALSE, italic = FALSE,
        underlined = FALSE, font.family = "Arial", 
        shading.color = "transparent") )
}


fp_bold <- function(){
return( fp_text(color = "black", font.size = 16,
        bold = TRUE, italic = FALSE,
        underlined = FALSE, font.family = "Arial", 
        shading.color = "transparent") )
}

我曾经通过使用 sum 运算符和函数 textProperties 来使用 pot 函数的组合:

pot("not bold ") + pot("and bold", textProperties(font.weight = "bold") )

我的问题是:我应该如何将 fp_normalfp_bold 函数与 ph_with_text 函数结合起来?

【问题讨论】:

    标签: r powerpoint reporters officer


    【解决方案1】:

    我已更新软件包以使此类操作更容易。 id_chr 的使用并不容易,下面的代码提供了不使用它的优势:)

    library(magrittr)
    library(officer)
    
    fp_normal <- fp_text(font.size = 24)
    fp_bold <- update(fp_normal, bold = TRUE)
    fp_red <- update(fp_normal, color = "red")
    
    pars <- block_list(
      fpar(ftext("not bold ", fp_normal), ftext("and bold", fp_bold)),
      fpar(ftext("red text", fp_red))
    )
    my_pres <- read_pptx() %>%
      add_slide(layout = "Title and Content", master = "Office Theme") %>%
      ph_with(pars, location = ph_location_type(type = "body") ) 
    
    print(my_pres, target = "test.pptx")
    

    【讨论】:

    • 这个版本还没有上cran,需要从github安装
    • 只是一个很小的观察,但我怀疑fp_redbold &lt;- update(fp_bold, color = "red") 是故意的,而不是更新fp_normal
    【解决方案2】:

    好的,最后我想我明白了。

    应用不同的样式就足以将 ph_with_text 函数与 ph_add_text 函数结合起来。

    ph_add_textpot 函数执行相同的求和运算符。请记住,为了引用某一行,您必须提供 id_chr 参数。您可以在运行 ph_with_text 后使用 slide_summary(ppt) 命令推断出正确的值。

    ppt <- read_pptx()
    ppt <- add_slide(ppt, "Title and Content", master = "Office Theme")
    ppt <- ph_with_text(ppt, "Some NOT bold text ", type = "body", index = 1)
    
    slide_summary(ppt) # I see that the id is 2. Now I can delete this line.
    
    ppt <- ph_add_text(ppt, "and some bold text", type = "body", style = fp_bold(), id_chr = 2)
    print(ppt, target = "boldTest.pptx")
    

    对于 fp_bold() 函数,请参见上面的问题。 在这一点上,我们可以通过继续使用 ph_add_text 来添加其他不同格式的文本(如果我们想换行,也可以使用“\n”。

    【讨论】:

    • ph_with_text 将在下一版本中弃用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2017-04-09
    • 1970-01-01
    • 2021-06-22
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多