Skip to contents

Class that pushes author metadata in the YAML header of Quarto files.

Super classes

plume::NameHandler -> plume::PlumeHandler -> plume::StatusSetter -> plume::StatusSetterPlumeQuarto -> PlumeQuarto

Methods

Inherited methods


Method new()

Create a PlumeQuarto object.

Usage

PlumeQuarto$new(
  data,
  file,
  names = NULL,
  roles = credit_roles(),
  credit_roles = FALSE,
  initials_given_name = FALSE,
  by = NULL
)

Arguments

data

A data frame containing author-related data.

file

A .qmd file to insert author data into.

names

A vector of key-value pairs specifying custom names to use, where keys are default names and values their respective replacements.

roles

A vector of key-value pairs defining roles where keys identify columns and values describe the actual roles to use.

credit_roles

[Deprecated]

It is now recommended to use roles = credit_roles() to use the Contributor Roles Taxonomy.

initials_given_name

Should the initials of given names be used?

by

A character string defining the default variable used to assign specific metadata to authors in all set_*() methods. By default, uses authors' id.

Returns

A PlumeQuarto object.


Method to_yaml()

Push or update author information in a YAML header. The generated YAML complies with Quarto's author and affiliations schemas.

Usage

PlumeQuarto$to_yaml()

Details

If missing, to_yaml() pushes author information into a YAML header. If already existing, the function replaces old author and affiliations values with the ones provided in the input data.

Returns

The input file invisibly.


Method clone()

The objects of this class are cloneable with this method.

Usage

PlumeQuarto$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

# Create a simple temporary file with a YAML header
# containing a title
tmp_file <- tempfile(fileext = ".qmd")
readr::write_lines("---\ntitle: Encyclopédie\n---", tmp_file)

# View the temporary file
cat(readr::read_file(tmp_file))
#> ---
#> title: Encyclopédie
#> ---

# Create a PlumeQuarto instance using the temporary file
# you've just created
aut <- PlumeQuarto$new(
  encyclopedists,
  file = tmp_file
)

# And push author data to the YAML header
aut$to_yaml()

cat(readr::read_file(tmp_file))
#> ---
#> title: Encyclopédie
#> author:
#>   - id: aut1
#>     name:
#>       given: Denis
#>       family: Diderot
#>     email: diderot@encyclopediste.fr
#>     phone: '+1234'
#>     orcid: 0000-0000-0000-0001
#>     note: born in 1713 in Langres
#>     roles:
#>       - supervision
#>       - writing - original draft
#>     affiliations:
#>       - ref: aff1
#>   - id: aut2
#>     name:
#>       given: Jean-Jacques
#>       family: Rousseau
#>     email: rousseau@encyclopediste.fr
#>     orcid: 0000-0000-0000-0002
#>     roles:
#>       - writing - original draft
#>     affiliations:
#>       - ref: aff2
#>   - id: aut3
#>     name:
#>       given: François-Marie
#>       family: Arouet
#>     email: arouet@encyclopediste.fr
#>     note: also known as Voltaire
#>     roles:
#>       - writing - original draft
#>     affiliations:
#>       - ref: aff2
#>   - id: aut4
#>     name:
#>       given: Jean
#>       family: Le Rond d'Alembert
#>     email: alembert@encyclopediste.fr
#>     orcid: 0000-0000-0000-0003
#>     note: born in 1717 in Paris
#>     roles:
#>       - supervision
#>       - writing - original draft
#>     affiliations:
#>       - ref: aff1
#>       - ref: aff3
#> affiliations:
#>   - id: aff1
#>     name: Université de Paris
#>   - id: aff2
#>     name: Lycée Louis-le-Grand
#>   - id: aff3
#>     name: Collège des Quatre-Nations
#> ---

# Pushing again with new data updates the YAML
# header accordingly
aut <- PlumeQuarto$new(
  dplyr::slice(encyclopedists, 2),
  file = tmp_file
)
aut$to_yaml()

cat(readr::read_file(tmp_file))
#> ---
#> title: Encyclopédie
#> author:
#>   - name:
#>       given: Jean-Jacques
#>       family: Rousseau
#>     email: rousseau@encyclopediste.fr
#>     orcid: 0000-0000-0000-0002
#>     roles:
#>       - writing - original draft
#>     affiliations:
#>       - ref: aff1
#> affiliations:
#>   - id: aff1
#>     name: Lycée Louis-le-Grand
#> ---

# Clean up the temporary file
unlink(tmp_file)