首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在军官包的ph_with_text函数中使用索引参数

如何在军官包的ph_with_text函数中使用索引参数
EN

Stack Overflow用户
提问于 2019-02-01 09:13:48
回答 1查看 899关注 0票数 0

再见,

我正在使用R上的军官包编写一个定制的pptx演示文稿,事实上,我正在移植Reporters的代码。

我的问题是关于布局的结构。起点是我上传的一个空pptx,以便导入主题和格式化设置;特别是我不使用

代码语言:javascript
运行
复制
ppt <- read_pptx()

要创建pptx,而是从现有文件导入它:

代码语言:javascript
运行
复制
ppt <- read_pptx("Blank_officer.pptx")

这就是标准的幻灯片布局。

问题是,我现在不知道如何填充字段。这就是我想要达到的目标:

我尝试使用以下代码:

代码语言:javascript
运行
复制
ppt <- read_pptx( ROOT_PATH( "template/Blank_officer.pptx" ) )
ppt <-  ppt <- add_slide( ppt, "Internal Slide - 1 Column Text", master = "Blank" )

ppt <- ph_with_text(x = ppt, str = "A Title", type = "title")
ppt <- ph_with_text(ppt, "Bullet text 4", type = "body", index = 4)
ppt <- ph_with_text(ppt, "Bullet text 11", type = "body", index = 11)
ppt <- ph_with_text(ppt, "\nBullet text 11.2", type = "body", index = 11)
ppt <- ph_with_text(ppt, 2, type = "sldNum")

print( ppt, target = "officerTest.pptx" )

我得到了以下结果:

这似乎很好,但事实是,我选择索引参数的方法是“尝试失败”,即随机选择值,看看会发生什么。

你能解释一下索引参数是如何工作的吗? 对于给定的幻灯片布局,是否有一个命令显示我可以使用哪个索引在文本框中写入?

作为替代办法:

我想知道是否存在"Tab"-like函数,即允许我在文本框中导航的函数,就像Reporters包中的函数一样。

谢谢你的帮忙,

再见

EN

回答 1

Stack Overflow用户

发布于 2019-02-05 13:20:49

最后我明白了。事实是,这个问题并不简单,因为索引值指的是ppt的不同部分,即它们随时间的变化!

当然,这意味着我们不能使用整数值,但是我们必须使用不同的1:1映射。

为此,我们必须知道幻灯片布局中不同框的名称。即:

代码语言:javascript
运行
复制
library(officer)
ppt <- read_pptx()
layout_properties( ppt ) 

此数据文件包含有关幻灯片布局结构的信息。特别是幻灯片名称( name 列)、组件类型(类型列)和段落标签( ph_label列)。

其思想是使用此数据创建一个动态映射,对于每一张幻灯片,类型和ph_label都将返回正确的索引。

为此,我编写了以下函数:pptIndexInfo函数通过布局名称过滤布局数据,并为对象分配一个渐进索引(独立于id)。事实上(我不知道为什么)索引是我们刚刚生成的索引,而不是id列值。

代码语言:javascript
运行
复制
pptIndexInfo <- function( ppt, layout, master ){
  aux = layout_properties(ppt, master = master, layout = layout)
  aux$index = NA
  for(type in unique(aux$type) ){
    aux[ aux$type == type, "index" ] = 1:length(aux[ aux$type == type, "index" ])
  }
  return(aux)
}

此时,我们只需要为所需的ph_label提取索引。

代码语言:javascript
运行
复制
Title_index <- function(ppt, layout, master){
  pptInd = pptIndexInfo(ppt, layout, master)
  return( pptInd$index[ which(pptInd$ph_label == "Title") ] )
}

例如,此函数生成过滤后的布局数据,并提取分配给ph_label "Title“的索引。

当您有相同“类型”的多个框时,这些函数是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54476283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档