--- title: "Generating placeholder slides for your presentation" date: "`r Sys.Date()`" output: rmarkdown::html_document: theme: "spacelab" highlight: "kate" toc: true toc_float: true author: - Yolanda Zhou ([`yolandazzz13`]) vignette: > %\VignetteIndexEntry{Generating placeholder} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} editor_options: markdown: wrap: 72 --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Overview This vignette shows how to add placeholder slides, including title slides and section headers, to a PowerPoint presentation using `autoslider.core`. The main function for this is `append_all_slides`, which takes in a structured `page_list` as input to define the slides you want to add. This approach is ideal for quickly building a standardized presentation from scratch. ## Generating a Deck with `append_all_slides` The `append_all_slides` function automates adding multiple slides by reading a `page_list` you provide. Each item in this list defines a single slide's properties. Each slide definition in the `page_list` must be a list containing: `type`: The kind of slide to add ("`title`" or "`section`"). `to_page`: The page number where the slide should be inserted. Content parameters: For` type = "title"`, you need to provide a `study_id.` For `type = "section"`, you need to provide a `section_title.` ## Example: Generating placeholder slides Here’s a complete example. We'll start with an empty presentation, define a `page_list` for our slides, and then call `append_all_slides` to generate the final deck and save it to a file. ```{r, eval=FALSE} library(officer) library(tools) # 1. Define a initial presentation file input <- "My_Presentation.pptx" read_pptx() %>% print(target = input) expected_output_file <- file.path( dirname(input), paste0(file_path_sans_ext(basename(input)), "_final.pptx") ) # 2. Define the presentation structure with a page_list my_page_list <- list( list(type = "title", to_page = 1, study_id = "Project No.1"), list(type = "section", to_page = 2, section_title = "Introduction"), list(type = "section", to_page = 3, section_title = "Methodology") ) # 3. Call append_all_slides to generate the deck # Set save_file = TRUE to write the result to a new file. # If you have an existing pptx object to modify on, pass it into `doc_original`. doc_result <- append_all_slides( doc_o = temp_pptx, page_list = my_page_list, doc_original = NULL, save_file = TRUE ) # 4. Verify the output cat(paste("Number of slides created:", length(doc_result), "\n")) cat(paste("Output file exists:", file.exists(expected_output_file))) ``` This script produces a new PowerPoint file named `My_Presentation_final.pptx`, containing the three slides defined in `my_page_list.` ### Notes - `to_page` parameter: The function validates that it does not exceed the maximum possible slide position (number of slides + 1). After a slide is inserted at a specific page, all subsequent page numbers shift. Plan your `page_list` sequence accordingly. - The functions are designed to work with standard `officer` layouts. They will fail if PowerPoint does not support the specified layouts ("Title and Content", "Section Header") and master theme ("Office Theme").