Manage author metadata and generate manuscript front matter. It produces title pages, acknowledgements, conflicts of interest, and contribution sections for large author lists, with helpers for validating and reading common spreadsheet formats.
authordown is an R package for managing author metadata and generating manuscript front matter, especially for large author lists.
Online app: Open the app
From CRAN (once available):
install.packages("authordown")
From GitHub:
# install.packages("devtools")
devtools::install_github("zh1peng/authordown")
library(authordown)
# Create a fresh template in a temporary file
template_path <- authordown_template()
authors <- authordown_read_local(template_path)
title_page <- generate_title_page(
data = authors,
title = "Example Paper",
style = "default",
show_degree = TRUE
)
cat(title_page)
ack <- generate_acknowledgement(authors, style = "paragraph")
coi <- generate_conflict(authors, style = "paragraph")
contrib <- generate_contribution(authors, style = "bullets")
cat(ack)
cat("\n\n")
cat(coi)
cat("\n\n")
cat(contrib)
xlsx_path <- system.file("extdata", "authordown_template.xlsx", package = "authordown")
authors_xlsx <- authordown_read_local(xlsx_path)
If you manage authors in an online table, export it locally and then use
authordown_read_local():
authordown_read_local().Supported formats: CSV, TSV, XLSX.
Use Affiliation1, Affiliation2, ... AffiliationN columns to list all
affiliations for each author. There is no hard limit; add as many columns as
needed. The title page numbers affiliations in the order they first appear.
Online app: Open the app
if (interactive()) {
shiny::runApp(system.file("shiny-app", package = "authordown"))
}
Workflow: download the template, fill it, upload it, preview the parsed data, then generate outputs for copy/paste.
If you want rendered HTML for easy copy/paste into a manuscript system, use:
if (requireNamespace("rmarkdown", quietly = TRUE) && rmarkdown::pandoc_available()) {
template_path <- authordown_template()
authors <- authordown_read_local(template_path)
html_path <- render_section_html(
section_title = "Conflict of Interest",
content_function = generate_conflict,
data = authors,
style = "paragraph"
)
# utils::browseURL(html_path)
}
FirstName and LastName.Corresponding = TRUE but Email is blank.AGPL-3