Skip to contents

Maps each placeholder `type:` used in a speclayout to the function that inserts it (`fn`), the number of slides it adds (`n`, used to place later slides) and the layout roles it uses (`roles`, checked before any slide is inserted).

Usage

placeholder_types(
  extra = getOption(option, list()),
  builtin = placeholder_type_defaults(),
  option = "autoslider.core.placeholder_types"
)

Arguments

extra

A named `list` of additional types. Defaults to the option named by `option`.

builtin

The types to start from.

option

Name of the option holding session-wide types.

Value

A named `list` of types, each `list(fn, n, roles)`.

Details

Add types for a session through the option named by `option`, or pass them as `extra`. Each entry is a function or `list(fn = , n = , roles = )`; `n` defaults to 1. The function must accept `doc_o`, `doc_original`, `to_page` and `save_file`, and return the `officer::rpptx` object. Other fields of the speclayout entry are passed on when the function has an argument of that name, as are `layouts` and `metadata`. A type with the same name as a built-in one replaces it.

Examples

names(placeholder_types())
#> [1] "section" "title"   "custom" 

# A study type that adds two section slides
two_sections <- function(doc_o, label = "Part", to_page = NA, doc_original = NULL, save_file = FALSE) {
  append_placeholder_slides(doc_o, list(
    placeholder_slide("section", title = paste(label, "A")),
    placeholder_slide("section", title = paste(label, "B"))
  ), to_page = to_page, doc_original = doc_original, save_file = save_file)
}
names(placeholder_types(list(two_sections = list(fn = two_sections, n = 2, roles = "section"))))
#> [1] "section"      "title"        "custom"       "two_sections"