From ab5cafcfc95a1de2e862428f9679b218e3d597de Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 15:12:41 -0700 Subject: [PATCH 01/66] new quillt site --- .Rbuildignore | 4 + .github/CODE_OF_CONDUCT.md | 128 ++++++++++++++++++++++++++++++++ .github/CONTRIBUTING.md | 21 ++++++ .github/workflows/pkgdown.yaml | 83 +++++++++++++++++++++ .gitignore | 1 + README.md | 4 + _pkgdown.yml | 79 ++++++++++++++++++++ vignettes/articles/examples.Rmd | 19 +++++ vignettes/articles/examples.yml | 7 ++ vignettes/rticles.Rmd | 31 ++++++++ 10 files changed, 377 insertions(+) create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/workflows/pkgdown.yaml create mode 100644 _pkgdown.yml create mode 100644 vignettes/articles/examples.Rmd create mode 100644 vignettes/articles/examples.yml create mode 100644 vignettes/rticles.Rmd diff --git a/.Rbuildignore b/.Rbuildignore index f53131f0d..7f867c5ff 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -5,3 +5,7 @@ ^\.github$ ^README\.md$ ^tools/ +^_pkgdown\.yml$ +^reference$ +^pkgdown$ +^vignettes/articles$ diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..b36903fa8 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, +and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall +community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or +advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email +address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a +professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards +of acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies +when an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at [INSERT CONTACT +METHOD]. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, +available at https://www.contributor-covenant.org/version/2/0/ +code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at https:// +www.contributor-covenant.org/translations. diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..20cd4cbb0 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,21 @@ +# Contributing to rticles + +We welcome contributions to the **rticles** package. + +You can contribute in many ways: + +* By opening issues to give feedback and share ideas. +* By fixing typos in documentations +* By submitting Pull Request (PR) to fix some opened issues +* By submitting Pull Request (PR) to suggest some new features. (It is considered good practice to open issues before to discuss ideas) + + +## To submit a contribution using a Pull Request: + +1. [Fork](https://github.com/rstudio/bookdown/fork) the repository and make your changes in a new branch specific to the PR. It is ok to edit a file in this repository using the `Edit` button on Github if the change is simple enough. + +2. For significant changes (e.g not required for fixing typos), ensure that you have signed the [individual](https://rstudioblog.files.wordpress.com/2017/05/rstudio_individual_contributor_agreement.pdf) or [corporate](https://rstudioblog.files.wordpress.com/2017/05/rstudio_corporate_contributor_agreement.pdf) contributor agreement as appropriate. You can send the signed copy to . + +3. Submit the [pull request](https://help.github.com/articles/using-pull-requests). It is ok to submit as draft in your are still working on it but would like some feedback from us. It always good to share in the open that you are working on it. + +We'll try to be as responsive as possible in reviewing and accepting pull requests. Appreciate your contributions very much! diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 000000000..d30fe28d5 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,83 @@ +on: + push: + branches: + - main + - master + pull_request: + branches: + - main + - master + +name: pkgdown + +jobs: + pkgdown: + if: ${{ github.event_name == 'push' || startsWith(github.head_ref, 'pkgdown/') }} + runs-on: ubuntu-18.04 + env: + RSPM: https://packagemanager.rstudio.com/cran/__linux__/bionic/latest + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + steps: + - uses: actions/checkout@v2 + + - uses: r-lib/actions/setup-r@v1 + id: install-r + + - uses: r-lib/actions/setup-pandoc@v1 + + - name: Install pak and query dependencies + run: | + install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/") + saveRDS(pak::pkg_deps(".", dependencies = TRUE), ".github/r-depends.rds") + shell: Rscript {0} + + - name: Cache R packages + uses: actions/cache@v2 + with: + path: ${{ env.R_LIBS_USER }} + key: ${{ runner.os }}-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} + restore-keys: ${{ runner.os }}-${{ steps.install-r.outputs.installed-r-version }}-1- + + - name: Install system dependencies + if: runner.os == 'Linux' + run: | + pak::local_system_requirements(execute = TRUE) + pak::pkg_system_requirements("pkgdown", execute = TRUE) + shell: Rscript {0} + + - name: Install package and dependencies + run: | + pak::local_install_dev_deps(upgrade = TRUE) + pak::pkg_install("r-lib/pkgdown") + pak::pkg_install("rstudio/quillt") + shell: Rscript {0} + + - name: Install package + run: R CMD INSTALL . + + - name: Cache some pkgdown assets + uses: actions/cache@v2 + with: + path: 'vignettes/articles/images/*.png' + key: 1-${{ hashFiles('vignettes/articles/examples.yml') }} + + - name: Build pkgdown site + run: pkgdown::build_site(new_process = FALSE) + shell: Rscript {0} + + - name: Deploy to Netlify + id: netlify-deploy + uses: nwtgck/actions-netlify@v1.1 + with: + publish-dir: 'reference' + production-branch: master + github-token: ${{ secrets.GITHUB_TOKEN }} + deploy-message: + 'Deploy from GHA: ${{ github.event.head_commit.message }} (${{ github.sha }})' + enable-pull-request-comment: false + enable-commit-comment: false + enable-commit-status: true + alias: deploy-preview-${{ github.event.number }} + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} diff --git a/.gitignore b/.gitignore index 7f6bab9e5..2daf6611e 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .Rhistory .RData *.log +reference diff --git a/README.md b/README.md index 5dc3cbefc..99dbd4535 100644 --- a/README.md +++ b/README.md @@ -121,3 +121,7 @@ All the `rticles` format are build similarly by providing a new pandoc tex templ * [The Pandoc manual](https://pandoc.org/MANUAL.html#templates) You can study [existing formats](inst/rmarkdown/templates) to see how all this works. + +## Code of Conduct + +Please note that the rticles project is released with a [Contributor Code of Conduct](https://pkgs.rstudio.com/rticles/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 000000000..eca25e94d --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,79 @@ +destination: reference + +# website will be referenced on https://pkgs.rstudio.com/ +# Open a PR in https://github.com/rstudio/pkgs.rstudio.com +url: https://pkgs.rstudio.com/rticles/ + +template: + package: quillt + opengraph: + image: + src: man/figures/logo.png + alt: "rticles package" + twitter: + creator: "@rstudio" + card: summary + +development: + version_tooltip: "Development version" + +home: + strip_header: false + links: + - text: Learn more + # if relevant, set url to another website i.e https://rmarkdown.rstudio.com + href: "" + +# structure of website themed with quillt +navbar: + title: ~ + type: default + structure: + left: [intro, examples, articles] + right: [reference, news, github] + components: + home: ~ + examples: + text: Examples + href: articles/articles/examples.html + articles: + text: Articles + menu: + - text: "No Article" + reference: + text: Reference + href: reference/index.html + github: + icon: fab fa-github fa-lg + href: https://github.com/rstudio/rticles + news: + text: News + menu: + - text: "Changelog" + href: news/index.html + - text: "------------------" + - text: "Blog posts" + # Add blog post where a released version is mentioned. + - text: "No blog post" + # - text: Version 0.2 + # href: + +# structure example +# reference: +# - title: Output formats +# desc: > +# These output formats are for building ... +# contents: +# +# - title: Previewing and rendering books +# contents: +# +# - title: Publishing +# desc: > +# Publish... +# +# +# - title: Helper functions +# desc: > +# These functions are utility functions when working with **rticles**. +# contents: diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd new file mode 100644 index 000000000..abd171d67 --- /dev/null +++ b/vignettes/articles/examples.Rmd @@ -0,0 +1,19 @@ +--- +title: "Example projects" +resource_files: + - images/ +--- + +```{r setup, include = FALSE} +library(quillt) +``` + + +The examples below illustrate the use of rticles with various packages and layouts. If you want to learn more about how the dashboards were created each example includes a link to its source code. + + +```{r, echo=FALSE} +examples(yml = "examples.yml") +``` + +**blogdown** repo contains an example on how to dynamically generate the `example.yml` taking screenshot of the featured examples. See [`example.Rmd`](https://github.com/rstudio/blogdown/blob/master/vignettes/articles/examples.Rmd) in the repository. diff --git a/vignettes/articles/examples.yml b/vignettes/articles/examples.yml new file mode 100644 index 000000000..fc1308247 --- /dev/null +++ b/vignettes/articles/examples.yml @@ -0,0 +1,7 @@ +# - title: Title to use +# img: image local or url +# href: link to the example +# source: link to the source repo +# # (optional) allows to filter examples +# showcase: true +# shiny: true diff --git a/vignettes/rticles.Rmd b/vignettes/rticles.Rmd new file mode 100644 index 000000000..a4014e226 --- /dev/null +++ b/vignettes/rticles.Rmd @@ -0,0 +1,31 @@ +--- +title: "Learn rticles" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{Learn + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +# Overview + +If you are new to using rticles, we encourage you to ... + +# User Guide + +Written by ... + +# Going further with examples + +Learn from examples at ... + +# Cheatsheets + +You can access it at... From 524e87799eea5d02d29eb9057ee720054e8f2efe Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 17:05:58 -0700 Subject: [PATCH 02/66] update readme --- README.Rmd | 123 ++++++++++++++++++++++++++++ README.md | 233 +++++++++++++++++++++++++++++++++-------------------- 2 files changed, 269 insertions(+), 87 deletions(-) create mode 100644 README.Rmd diff --git a/README.Rmd b/README.Rmd new file mode 100644 index 000000000..8a8fb22bd --- /dev/null +++ b/README.Rmd @@ -0,0 +1,123 @@ +--- +output: github_document +--- + + + + + +[![R-CMD-check](https://github.com/rstudio/rticles/workflows/R-CMD-check/badge.svg)](https://github.com/rstudio/rticles/actions) [![Downloads from the RStudio CRAN mirror](https://cranlogs.r-pkg.org/badges/rticles)](https://cran.r-project.org/package=rticles) [![CRAN status](https://www.r-pkg.org/badges/version/rticles)](https://CRAN.R-project.org/package=rticles) + + + +# rticles + +The **rticles** package provides a suite of custom [R Markdown](https://rmarkdown.rstudio.com) LaTeX formats and templates for various formats. Most of the templates are provided and maintained by the community, and anyone can contribute a new template. See [How to contribute](#how-to-contribute) below. + +## Book + +R Markdown: The Definitive Guide + +## Installation + +You can install and use **rticles** from CRAN as follows: + +``` r +install.packages("rticles") +``` + +If you wish to install the development version from GitHub (which often contains new article formats), you can do this: + +``` r +remotes::install_github("rstudio/rticles") +``` + +## Using rticles + +```{r child="man/fragments/usage.md"} +``` + +## Templates + +Currently included templates and their contributors are the following: + +| Journal | Contributors | Pull request | Output format | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| +| [ACM: Association for Computing Machinery](https://www.acm.org/publications/about-publications) | [\@ramnathv](https://github.com/ramnathv) | [\#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | +| [ACS](https://pubs.acs.org) | [\@yufree](https://github.com/yufree) | [\#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | +| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [\@sboysel](https://github.com/sboysel) | [\#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | +| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [\@eliocamp](https://github.com/eliocamp) | [\#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | +| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [\@yufree](https://github.com/yufree) | [\#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | +| [ASA: American Statistical Association](https://www.amstat.org/) | | [\#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | +| [arXiv](https://arxiv.org/) pre-prints based on George Kour's template | [\@alexpghayes](https://github.com) | [\#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | +| [Bioinformatics](https://academic.oup.com/bioinformatics) | [\@ShixiangWang](https://github.com/ShixiangWang) | [\#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | +| [Biometrics](https://biometrics.biometricsociety.org) | [\@daltonhance](https://github.com/daltonhance) | [\#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | +| [Bulletin de l'AMQ](https://www.amq.math.ca/bulletin/) | [\@desautm](https://github.com/desautm) | [\#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | +| [Copernicus Publications](https://publications.copernicus.org) | [\@nuest](https://github.com/nuest), [\@RLumSK](https://github.com/RLumSK) | [\#172](https://github.com/rstudio/rticles/pull/172), [\#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | +| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | +| [Elsevier](https://www.elsevier.com) | [\@cboettig](https://github.com/cboettig) | [\#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | +| [Frontiers](https://www.frontiersin.org/) | [\@muschellij2](https://github.com/muschellij2) | [\#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | +| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [\@Emaasit](https://github.com/Emaasit), [\@espinielli](https://github.com/espinielli), [\@nathanweeks](https://github.com/nathanweeks), [\@DunLug](https://github.com/DunLug) | [\#97](https://github.com/rstudio/rticles/pull/97), [\#169](https://github.com/rstudio/rticles/pull/169), [\#227](https://github.com/rstudio/rticles/pull/227), [\#263](https://github.com/rstudio/rticles/pull/263), [\#264](https://github.com/rstudio/rticles/pull/264), [\#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | +| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [\@auzaheta](https://github.com/auzaheta) | [\#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | +| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [\@stefanocoretta](https://github.com/stefanocoretta) | [\#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | +| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [\@noamross](https://github.com/noamross) | [\#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | +| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | +| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [\@nuest](https://github.com/nuest) | [\#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | +| [MDPI](https://www.mdpi.com) | [\@dleutnant](https://github.com/dleutnant) | [\#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | +| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [\@oleskiewicz](https://github.com/oleskiewicz) | [\#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | +| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [\@dmkaplan](https://github.com/dmkaplan) | [\#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | +| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [\@zkamvar](https://github.com/zkamvar) | [\#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | +| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [\@stefanocoretta](https://github.com/stefanocoretta) | [\#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | +| [PLOS](https://plos.org/#journals) | [\@sjmgarnier](https://github.com/sjmgarnier) | [\#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | +| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [\@cboettig](https://github.com/cboettig) | [\#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | +| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [\@ThierryO](https://github.com/ThierryO) | [\#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | +| [RSS: Royal Statistical Society](https://rss.org.uk/) | [\@carlganz](https://github.com/carlganz) | [\#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | +| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [\@oguzhanogreden](https://github.com/oguzhanogreden) | [\#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | +| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [\@strakaps](https://github.com/strakaps) | [\#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | +| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [\@ellessenne](https://github.com/ellessenne) | [\#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | +| [Taylor & Francis](https://www.tandfonline.com/) | [\@dleutnant](https://github.com/dleutnant) | [\#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | +| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | + +You can also get the list of available journal names with `rticles::journals()`. + +Under the hood, LaTeX templates are used to ensure that documents conform precisely to submission standards. At the same time, composition and formatting can be done using lightweight [markdown](https://rmarkdown.rstudio.com/authoring_basics.html) syntax, and R code and its output can be seamlessly included using [knitr](https://yihui.org/knitr/). + +## Getting help + +There are two main places to get help: + +1. The [RStudio community](https://community.rstudio.com/tag/rticles) is a friendly place to ask any questions about **rticles**. Be sure to use the `rticles` tag. + +2. [Stack Overflow](https://stackoverflow.com/questions/tagged/rticles) is a great source of answers to common **bookdown** questions. Use the tags [`[r][rticles]`](https://stackoverflow.com/questions/tagged/rticles+r) if you ask a question. + +## Code of Conduct + +Please note that the rticles project is released with a [Contributor Code of Conduct](https://pkgs.rstudio.com/rticles/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. + +## How to contribute? + +Most of the templates are contributed directly by the users in the community. If you want **rticles** to offer a new journal format, you can contribute by the following way. + +### Suggest an idea for new format opening an issue. + +You may not feel confident enough or may not have time to contribute a new format. By opening a new issue, you can share the idea for this format, and see if someone in the community can help on it. +This is not the best way to quickly get your format included but at least it is a great way to see if others are insterested too. + +To see the existing suggested formats, just filter issues with the [help wanted](https://github.com/rstudio/rticles/labels/help%20wanted) label. You can then add a :+1: or help to add the template :wink:. + +### Contribute a new template format opening a pull request. + +To contribute a new format, you need to open a new pull request (PR). When opening the PR, you'll see the [PR template](https://github.com/rstudio/rticles/blob/master/.github/PULL_REQUEST_TEMPLATE.md) explaining how to proceed and what is important to check. Please follow it. +Even if you are just starting or you are not finished, you share your work by creating a [draft PR](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests). It is a great way to let us know that you are still working on it (like [these opened ones](https://github.com/rstudio/rticles/pulls?q=is%3Apr+draft%3Atrue+)), and it is also a great way to ask for help from the community. +When you are ready, you can submit the PR for review, and we will iterate until it is merged. + +#### Technical resources helpful to contribute a template + +The best way to get started is to look at the previous examples of submitted PR. You'll find links to them in the table [above](#overview). + +All the `rticles` format are build similarly by providing a new pandoc tex template to replace the default one. You'll learn more about pandoc templates in these places: + +- [R Markdown Cookbook](https://bookdown.org/yihui/rmarkdown-cookbook/latex-template.html) +- [The Pandoc manual](https://pandoc.org/MANUAL.html#templates) + +You can study [existing formats](inst/rmarkdown/templates) to see how all this works. diff --git a/README.md b/README.md index 99dbd4535..4b33bddaf 100644 --- a/README.md +++ b/README.md @@ -1,127 +1,186 @@ + + + [![R-CMD-check](https://github.com/rstudio/rticles/workflows/R-CMD-check/badge.svg)](https://github.com/rstudio/rticles/actions) -[![Downloads from the RStudio CRAN mirror](https://cranlogs.r-pkg.org/badges/rticles)](https://cran.r-project.org/package=rticles) -[![CRAN status](https://www.r-pkg.org/badges/version/rticles)](https://CRAN.R-project.org/package=rticles) +[![Downloads from the RStudio CRAN +mirror](https://cranlogs.r-pkg.org/badges/rticles)](https://cran.r-project.org/package=rticles) +[![CRAN +status](https://www.r-pkg.org/badges/version/rticles)](https://CRAN.R-project.org/package=rticles) + +# rticles + +The **rticles** package provides a suite of custom [R +Markdown](https://rmarkdown.rstudio.com) LaTeX formats and templates for +various formats. Most of the templates are provided and maintained by +the community, and anyone can contribute a new template. See [How to +contribute](#how-to-contribute) below. + +## Book + +R Markdown: The Definitive Guide + ## Installation You can install and use **rticles** from CRAN as follows: -```r +``` r install.packages("rticles") ``` -If you wish to install the development version from GitHub (which often contains new article formats), you can do this: +If you wish to install the development version from GitHub (which often +contains new article formats), you can do this: -```r +``` r remotes::install_github("rstudio/rticles") ``` -## Overview - -The **rticles** package provides a suite of custom [R Markdown](https://rmarkdown.rstudio.com) LaTeX formats and templates for various formats. Most of the templates are provided and maintained by the community, and anyone can contribute a new template. See [How to contribute](#how-to-contribute) below. - -Currently included templates and their contributors are the following: - -| Journal | Contributors | Pull request | Output format | -|-|-|-|-| -| [ACM: Association for Computing Machinery](https://www.acm.org/publications/about-publications) | [@ramnathv](https://github.com/ramnathv) | [#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | -| [ACS](https://pubs.acs.org) | [@yufree](https://github.com/yufree) | [#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | -| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [@sboysel](https://github.com/sboysel) | [#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | -| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [@eliocamp](https://github.com/eliocamp) | [#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | -| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [@yufree](https://github.com/yufree) | [#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | -| [ASA: American Statistical Association](https://www.amstat.org/) | | [#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | -| [arXiv](https://arxiv.org/) pre-prints based on George Kour's template | [@alexpghayes](https://github.com) | [#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | -| [Bioinformatics](https://academic.oup.com/bioinformatics) | [@ShixiangWang](https://github.com/ShixiangWang) | [#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | -| [Biometrics](https://biometrics.biometricsociety.org) | [@daltonhance](https://github.com/daltonhance) | [#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | -| [Bulletin de l'AMQ](https://www.amq.math.ca/bulletin/) | [@desautm](https://github.com/desautm) | [#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | -| [Copernicus Publications](https://publications.copernicus.org) | [@nuest](https://github.com/nuest), [@RLumSK](https://github.com/RLumSK) | [#172](https://github.com/rstudio/rticles/pull/172), [#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | -| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | -| [Elsevier](https://www.elsevier.com) | [@cboettig](https://github.com/cboettig) | [#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | -| [Frontiers](https://www.frontiersin.org/) | [@muschellij2](https://github.com/muschellij2) | [#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | -| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [@Emaasit](https://github.com/Emaasit), [@espinielli](https://github.com/espinielli), [@nathanweeks](https://github.com/nathanweeks), [@DunLug](https://github.com/DunLug) | [#97](https://github.com/rstudio/rticles/pull/97), [#169](https://github.com/rstudio/rticles/pull/169), [#227](https://github.com/rstudio/rticles/pull/227), [#263](https://github.com/rstudio/rticles/pull/263), [#264](https://github.com/rstudio/rticles/pull/264), [#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | -| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [@auzaheta](https://github.com/auzaheta) | [#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | -| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [@stefanocoretta](https://github.com/stefanocoretta) | [#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | -| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [@noamross](https://github.com/noamross) | [#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | -| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | -| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [@nuest](https://github.com/nuest) | [#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | -| [MDPI](https://www.mdpi.com) | [@dleutnant](https://github.com/dleutnant) | [#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | -| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [@oleskiewicz](https://github.com/oleskiewicz) | [#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | -| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [@dmkaplan](https://github.com/dmkaplan) | [#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | -| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [@zkamvar](https://github.com/zkamvar) | [#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | -| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [@stefanocoretta](https://github.com/stefanocoretta) | [#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | -| [PLOS](https://plos.org/#journals) | [@sjmgarnier](https://github.com/sjmgarnier) | [#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | -| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [@cboettig](https://github.com/cboettig) | [#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | -| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [@ThierryO](https://github.com/ThierryO) | [#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | -| [RSS: Royal Statistical Society](https://rss.org.uk/) | [@carlganz](https://github.com/carlganz) | [#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | -| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [@oguzhanogreden](https://github.com/oguzhanogreden) | [#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | -| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [@strakaps](https://github.com/strakaps) | [#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | -| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [@ellessenne](https://github.com/ellessenne) | [#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | -| [Taylor & Francis](https://www.tandfonline.com/) | [@dleutnant](https://github.com/dleutnant) | [#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | -| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | +## Using rticles +To use **rticles** from RStudio, you can access the templates through +`File -> New File -> R Markdown`. This will open the dialog box where +you can select from one of the available templates: -You can also get the list of available journal names with `rticles::journals()`. +![New R +Markdown](https://bookdown.org/yihui/rmarkdown/images/rticles-templates.png) -Under the hood, LaTeX templates are used to ensure that documents conform precisely to submission standards. At the same time, composition and formatting can be done using lightweight [markdown](https://rmarkdown.rstudio.com/authoring_basics.html) syntax, and R code and its output can be seamlessly included using [knitr](https://yihui.org/knitr/). +If you are not using RStudio, you’ll also need to install +[Pandoc](https://pandoc.org) following these +[instructions](https://bookdown.org/yihui/rmarkdown-cookbook/install-pandoc.html). +Then, use the `rmarkdown::draft()` function to create articles: -Using **rticles** requires the prerequisites described below. You can get most of these automatically by installing the latest release of RStudio (instructions for using **rticles** without RStudio are also provided). - -## Using rticles from RStudio - -To use **rticles** from RStudio: - -1. Install the latest [RStudio](https://rstudio.com/products/rstudio/download/). - -2. Install the **rticles** package. - -3. Use the **New R Markdown** dialog to create an article from one of the templates: +``` r +rmarkdown::draft( + "MyJSSArticle.Rmd", template = "jss", package = "rticles" +) +rmarkdown::draft( + "MyRJournalArticle", template = "rjournal", package = "rticles" +) +``` - ![New R Markdown](https://rmarkdown.rstudio.com/images/new_r_markdown.png) +This will create a folder containing a Rmd file using the corresponding +output format and all the assets required by this format. -## Using rticles outside of RStudio +## Templates -1. Install [Pandoc](https://pandoc.org) using the [instructions for your platform](https://rmarkdown.rstudio.com/docs/articles/pandoc.html). +Currently included templates and their contributors are the following: -2. Install the **rticles** packages. +| Journal | Contributors | Pull request | Output format | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| +| [ACM: Association for Computing Machinery](https://www.acm.org/publications/about-publications) | [@ramnathv](https://github.com/ramnathv) | [\#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | +| [ACS](https://pubs.acs.org) | [@yufree](https://github.com/yufree) | [\#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | +| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [@sboysel](https://github.com/sboysel) | [\#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | +| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [@eliocamp](https://github.com/eliocamp) | [\#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | +| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [@yufree](https://github.com/yufree) | [\#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | +| [ASA: American Statistical Association](https://www.amstat.org/) | | [\#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | +| [arXiv](https://arxiv.org/) pre-prints based on George Kour’s template | [@alexpghayes](https://github.com) | [\#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | +| [Bioinformatics](https://academic.oup.com/bioinformatics) | [@ShixiangWang](https://github.com/ShixiangWang) | [\#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | +| [Biometrics](https://biometrics.biometricsociety.org) | [@daltonhance](https://github.com/daltonhance) | [\#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | +| [Bulletin de l’AMQ](https://www.amq.math.ca/bulletin/) | [@desautm](https://github.com/desautm) | [\#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | +| [Copernicus Publications](https://publications.copernicus.org) | [@nuest](https://github.com/nuest), [@RLumSK](https://github.com/RLumSK) | [\#172](https://github.com/rstudio/rticles/pull/172), [\#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | +| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | +| [Elsevier](https://www.elsevier.com) | [@cboettig](https://github.com/cboettig) | [\#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | +| [Frontiers](https://www.frontiersin.org/) | [@muschellij2](https://github.com/muschellij2) | [\#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | +| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [@Emaasit](https://github.com/Emaasit), [@espinielli](https://github.com/espinielli), [@nathanweeks](https://github.com/nathanweeks), [@DunLug](https://github.com/DunLug) | [\#97](https://github.com/rstudio/rticles/pull/97), [\#169](https://github.com/rstudio/rticles/pull/169), [\#227](https://github.com/rstudio/rticles/pull/227), [\#263](https://github.com/rstudio/rticles/pull/263), [\#264](https://github.com/rstudio/rticles/pull/264), [\#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | +| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [@auzaheta](https://github.com/auzaheta) | [\#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | +| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [@stefanocoretta](https://github.com/stefanocoretta) | [\#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | +| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [@noamross](https://github.com/noamross) | [\#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | +| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | +| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [@nuest](https://github.com/nuest) | [\#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | +| [MDPI](https://www.mdpi.com) | [@dleutnant](https://github.com/dleutnant) | [\#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | +| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [@oleskiewicz](https://github.com/oleskiewicz) | [\#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | +| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [@dmkaplan](https://github.com/dmkaplan) | [\#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | +| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [@zkamvar](https://github.com/zkamvar) | [\#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | +| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [@stefanocoretta](https://github.com/stefanocoretta) | [\#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | +| [PLOS](https://plos.org/#journals) | [@sjmgarnier](https://github.com/sjmgarnier) | [\#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | +| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [@cboettig](https://github.com/cboettig) | [\#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | +| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [@ThierryO](https://github.com/ThierryO) | [\#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | +| [RSS: Royal Statistical Society](https://rss.org.uk/) | [@carlganz](https://github.com/carlganz) | [\#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | +| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [@oguzhanogreden](https://github.com/oguzhanogreden) | [\#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | +| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [@strakaps](https://github.com/strakaps) | [\#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | +| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [@ellessenne](https://github.com/ellessenne) | [\#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | +| [Taylor & Francis](https://www.tandfonline.com/) | [@dleutnant](https://github.com/dleutnant) | [\#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | +| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | + +You can also get the list of available journal names with +`rticles::journals()`. + +Under the hood, LaTeX templates are used to ensure that documents +conform precisely to submission standards. At the same time, composition +and formatting can be done using lightweight +[markdown](https://rmarkdown.rstudio.com/authoring_basics.html) syntax, +and R code and its output can be seamlessly included using +[knitr](https://yihui.org/knitr/). + +## Getting help + +There are two main places to get help: + +1. The [RStudio community](https://community.rstudio.com/tag/rticles) + is a friendly place to ask any questions about **rticles**. Be sure + to use the `rticles` tag. + +2. [Stack Overflow](https://stackoverflow.com/questions/tagged/rticles) + is a great source of answers to common **bookdown** questions. Use + the tags + [`[r][rticles]`](https://stackoverflow.com/questions/tagged/rticles+r) + if you ask a question. -3. Use the `rmarkdown::draft()` function to create articles: +## Code of Conduct - ```r - rmarkdown::draft("MyJSSArticle.Rmd", template = "jss", package = "rticles") - rmarkdown::draft("MyRJournalArticle", template = "rjournal", package = "rticles") - ``` - This will create a folder containing a Rmd file using the corresponding output format and all the assets required by this format. +Please note that the rticles project is released with a [Contributor +Code of Conduct](https://pkgs.rstudio.com/rticles/CODE_OF_CONDUCT.html). +By contributing to this project, you agree to abide by its terms. -## How to contribute? +## How to contribute? -Most of the templates are contributed directly by the users in the community. If you want **rticles** to offer a new journal format, you can contribute by the following way. +Most of the templates are contributed directly by the users in the +community. If you want **rticles** to offer a new journal format, you +can contribute by the following way. ### Suggest an idea for new format opening an issue. -You may not feel confident enough or may not have time to contribute a new format. By opening a new issue, you can share the idea for this format, and see if someone in the community can help on it. -This is not the best way to quickly get your format included but at least it is a great way to see if others are insterested too. +You may not feel confident enough or may not have time to contribute a +new format. By opening a new issue, you can share the idea for this +format, and see if someone in the community can help on it. +This is not the best way to quickly get your format included but at +least it is a great way to see if others are insterested too. -To see the existing suggested formats, just filter issues with the [help wanted](https://github.com/rstudio/rticles/labels/help%20wanted) label. You can then add a :+1: or help to add the template :wink:. +To see the existing suggested formats, just filter issues with the [help +wanted](https://github.com/rstudio/rticles/labels/help%20wanted) label. +You can then add a :+1: or help to add the template :wink:. ### Contribute a new template format opening a pull request. -To contribute a new format, you need to open a new pull request (PR). When opening the PR, you'll see the [PR template](https://github.com/rstudio/rticles/blob/master/.github/PULL_REQUEST_TEMPLATE.md) explaining how to proceed and what is important to check. Please follow it. -Even if you are just starting or you are not finished, you share your work by creating a [draft PR](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests). It is a great way to let us know that you are still working on it (like [these opened ones](https://github.com/rstudio/rticles/pulls?q=is%3Apr+draft%3Atrue+)), and it is also a great way to ask for help from the community. -When you are ready, you can submit the PR for review, and we will iterate until it is merged. +To contribute a new format, you need to open a new pull request (PR). +When opening the PR, you’ll see the [PR +template](https://github.com/rstudio/rticles/blob/master/.github/PULL_REQUEST_TEMPLATE.md) +explaining how to proceed and what is important to check. Please follow +it. +Even if you are just starting or you are not finished, you share your +work by creating a [draft +PR](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests#draft-pull-requests). +It is a great way to let us know that you are still working on it (like +[these opened +ones](https://github.com/rstudio/rticles/pulls?q=is%3Apr+draft%3Atrue+)), +and it is also a great way to ask for help from the community. +When you are ready, you can submit the PR for review, and we will +iterate until it is merged. #### Technical resources helpful to contribute a template -The best way to get started is to look at the previous examples of submitted PR. You'll find links to them in the table [above](#overview). - -All the `rticles` format are build similarly by providing a new pandoc tex template to replace the default one. You'll learn more about pandoc templates in these places: +The best way to get started is to look at the previous examples of +submitted PR. You’ll find links to them in the table [above](#overview). -* [R Markdown Cookbook](https://bookdown.org/yihui/rmarkdown-cookbook/latex-template.html) -* [The Pandoc manual](https://pandoc.org/MANUAL.html#templates) +All the `rticles` format are build similarly by providing a new pandoc +tex template to replace the default one. You’ll learn more about pandoc +templates in these places: -You can study [existing formats](inst/rmarkdown/templates) to see how all this works. - -## Code of Conduct +- [R Markdown + Cookbook](https://bookdown.org/yihui/rmarkdown-cookbook/latex-template.html) +- [The Pandoc manual](https://pandoc.org/MANUAL.html#templates) -Please note that the rticles project is released with a [Contributor Code of Conduct](https://pkgs.rstudio.com/rticles/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. +You can study [existing formats](inst/rmarkdown/templates) to see how +all this works. From 694b307f48e0182059dd9bdda91c8a217b47f6cc Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 17:06:10 -0700 Subject: [PATCH 03/66] fragments --- man/fragments/usage.md | 19 +++++++++++++++++++ vignettes/rticles.Rmd | 29 +++++++++++++++++++---------- 2 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 man/fragments/usage.md diff --git a/man/fragments/usage.md b/man/fragments/usage.md new file mode 100644 index 000000000..b339e11fd --- /dev/null +++ b/man/fragments/usage.md @@ -0,0 +1,19 @@ + + +To use **rticles** from RStudio, you can access the templates through `File -> New File -> R Markdown`. This will open the dialog box where you can select from one of the available templates: + +![New R Markdown](https://bookdown.org/yihui/rmarkdown/images/rticles-templates.png) + + +If you are not using RStudio, you'll also need to install [Pandoc](https://pandoc.org) following these [instructions](https://bookdown.org/yihui/rmarkdown-cookbook/install-pandoc.html). Then, use the `rmarkdown::draft()` function to create articles: + +```r +rmarkdown::draft( + "MyJSSArticle.Rmd", template = "jss", package = "rticles" +) +rmarkdown::draft( + "MyRJournalArticle", template = "rjournal", package = "rticles" +) +``` + + This will create a folder containing a Rmd file using the corresponding output format and all the assets required by this format. diff --git a/vignettes/rticles.Rmd b/vignettes/rticles.Rmd index a4014e226..00786d9a4 100644 --- a/vignettes/rticles.Rmd +++ b/vignettes/rticles.Rmd @@ -1,8 +1,8 @@ --- -title: "Learn rticles" +title: "Get started" output: rmarkdown::html_vignette vignette: > - %\VignetteIndexEntry{Learn + %\VignetteIndexEntry{Get started} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -14,18 +14,27 @@ knitr::opts_chunk$set( ) ``` -# Overview +## Accessing templates -If you are new to using rticles, we encourage you to ... +```{r child="../man/fragments/usage.md"} +``` + + +View the list of available journal names with `rticles::journals()`. -# User Guide +## Figure numbering & cross-references -Written by ... +You may want to use features of the [**bookdown** package](https://pkgs.rstudio.com/bookdown/) like automatic numbering and cross-referencing of figures and tables in your article. To do this, you'll need to edit your YAML to: -# Going further with examples ++ Switch to the `bookdown::pdf_book` output format, and -Learn from examples at ... ++ Supply your **rticles** template of choice as the `base_format`. + +```{.yaml} +output: + bookdown::pdf_book: + base_format: rticles::peerj_article +``` -# Cheatsheets -You can access it at... +Read more about using the **rticles** package here: https://bookdown.org/yihui/rmarkdown/journals.html From 4cd2ce078e17467d0e2aa3d8e26ff25e3591e793 Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 17:06:39 -0700 Subject: [PATCH 04/66] rm articles from top nav and structure functions for reference section --- _pkgdown.yml | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index eca25e94d..7c7170b69 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -29,17 +29,13 @@ navbar: title: ~ type: default structure: - left: [intro, examples, articles] + left: [intro, examples] right: [reference, news, github] components: home: ~ examples: text: Examples href: articles/articles/examples.html - articles: - text: Articles - menu: - - text: "No Article" reference: text: Reference href: reference/index.html @@ -59,21 +55,12 @@ navbar: # href: # structure example -# reference: -# - title: Output formats -# desc: > -# These output formats are for building ... -# contents: -# -# - title: Previewing and rendering books -# contents: -# -# - title: Publishing -# desc: > -# Publish... -# -# -# - title: Helper functions -# desc: > -# These functions are utility functions when working with **rticles**. -# contents: +reference: + - title: List all available journal templates + contents: + - journals + - title: Journal templates + contents: + - ends_with("article") + + From 7c92064bed6d4b2cb586c09df8bb04c8a4517429 Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 17:08:02 -0700 Subject: [PATCH 05/66] trigger action? --- .github/workflows/pkgdown.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index d30fe28d5..a5d1e201a 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -3,6 +3,7 @@ on: branches: - main - master + - pkgdown pull_request: branches: - main From 455dc6da3bb92a70bd1a14f9358a5739258e8ebc Mon Sep 17 00:00:00 2001 From: Alison Hill Date: Mon, 28 Jun 2021 17:47:06 -0700 Subject: [PATCH 06/66] temp fix to branches for gha build --- .github/workflows/pkgdown.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index a5d1e201a..233eb6451 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -3,7 +3,7 @@ on: branches: - main - master - - pkgdown + - pkgdown # rm this pull_request: branches: - main @@ -71,7 +71,7 @@ jobs: uses: nwtgck/actions-netlify@v1.1 with: publish-dir: 'reference' - production-branch: master + production-branch: pkgdown # change this back to master github-token: ${{ secrets.GITHUB_TOKEN }} deploy-message: 'Deploy from GHA: ${{ github.event.head_commit.message }} (${{ github.sha }})' From 0ff048c81c3adbcca3d02325a5b3fc8e8b443a3e Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 19 Jul 2021 17:59:07 +0200 Subject: [PATCH 07/66] usethis::use_readme_rmd() to fix some setup * Adding to `.Rbuildignore` --- .Rbuildignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.Rbuildignore b/.Rbuildignore index 7f867c5ff..4cd707339 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -9,3 +9,4 @@ ^reference$ ^pkgdown$ ^vignettes/articles$ +^README\.Rmd$ From 8f81237c23aabf2e713833f3e65eea5536162fb8 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 19 Jul 2021 18:01:52 +0200 Subject: [PATCH 08/66] Adding missing infrastructure for vignettes --- .gitignore | 1 + DESCRIPTION | 1 + vignettes/.gitignore | 2 ++ 3 files changed, 4 insertions(+) create mode 100644 vignettes/.gitignore diff --git a/.gitignore b/.gitignore index 2daf6611e..6a1c905da 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ .RData *.log reference +inst/doc diff --git a/DESCRIPTION b/DESCRIPTION index b519a7d1d..1d25d4286 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -58,3 +58,4 @@ BugReports: https://github.com/rstudio/rticles/issues RoxygenNote: 7.1.1 Suggests: testit, bookdown, xtable Encoding: UTF-8 +VignetteBuilder: knitr diff --git a/vignettes/.gitignore b/vignettes/.gitignore new file mode 100644 index 000000000..097b24163 --- /dev/null +++ b/vignettes/.gitignore @@ -0,0 +1,2 @@ +*.html +*.R From a20c951ce07f13eaa8892d21a1fea76b950b70a2 Mon Sep 17 00:00:00 2001 From: Alison Presmanes Hill Date: Tue, 20 Jul 2021 08:28:36 -0700 Subject: [PATCH 09/66] Update README.Rmd Co-authored-by: Christophe Dervieux --- README.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.Rmd b/README.Rmd index 8a8fb22bd..c61d2bc5d 100644 --- a/README.Rmd +++ b/README.Rmd @@ -86,7 +86,7 @@ Under the hood, LaTeX templates are used to ensure that documents conform precis There are two main places to get help: -1. The [RStudio community](https://community.rstudio.com/tag/rticles) is a friendly place to ask any questions about **rticles**. Be sure to use the `rticles` tag. +1. The [RStudio community](https://community.rstudio.com/tags/c/R-Markdown/10/rticles) is a friendly place to ask any questions about **rticles**. Be sure to use the `rticles` tag. 2. [Stack Overflow](https://stackoverflow.com/questions/tagged/rticles) is a great source of answers to common **bookdown** questions. Use the tags [`[r][rticles]`](https://stackoverflow.com/questions/tagged/rticles+r) if you ask a question. From bc4bf34b974193a42b8dd0300059d985fdd1fe0e Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 11:57:35 +0200 Subject: [PATCH 10/66] Keep the table in README.Rmd simpler so that it is easier to modify --- README.Rmd | 72 +++++++++++++++++++++++++-------------------------- README.md | 75 +++++++++++++++++++++++++++--------------------------- 2 files changed, 74 insertions(+), 73 deletions(-) diff --git a/README.Rmd b/README.Rmd index c61d2bc5d..a8563435e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -41,42 +41,42 @@ remotes::install_github("rstudio/rticles") Currently included templates and their contributors are the following: -| Journal | Contributors | Pull request | Output format | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| -| [ACM: Association for Computing Machinery](https://www.acm.org/publications/about-publications) | [\@ramnathv](https://github.com/ramnathv) | [\#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | -| [ACS](https://pubs.acs.org) | [\@yufree](https://github.com/yufree) | [\#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | -| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [\@sboysel](https://github.com/sboysel) | [\#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | -| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [\@eliocamp](https://github.com/eliocamp) | [\#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | -| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [\@yufree](https://github.com/yufree) | [\#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | -| [ASA: American Statistical Association](https://www.amstat.org/) | | [\#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | -| [arXiv](https://arxiv.org/) pre-prints based on George Kour's template | [\@alexpghayes](https://github.com) | [\#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | -| [Bioinformatics](https://academic.oup.com/bioinformatics) | [\@ShixiangWang](https://github.com/ShixiangWang) | [\#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | -| [Biometrics](https://biometrics.biometricsociety.org) | [\@daltonhance](https://github.com/daltonhance) | [\#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | -| [Bulletin de l'AMQ](https://www.amq.math.ca/bulletin/) | [\@desautm](https://github.com/desautm) | [\#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | -| [Copernicus Publications](https://publications.copernicus.org) | [\@nuest](https://github.com/nuest), [\@RLumSK](https://github.com/RLumSK) | [\#172](https://github.com/rstudio/rticles/pull/172), [\#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | -| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | -| [Elsevier](https://www.elsevier.com) | [\@cboettig](https://github.com/cboettig) | [\#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | -| [Frontiers](https://www.frontiersin.org/) | [\@muschellij2](https://github.com/muschellij2) | [\#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | -| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [\@Emaasit](https://github.com/Emaasit), [\@espinielli](https://github.com/espinielli), [\@nathanweeks](https://github.com/nathanweeks), [\@DunLug](https://github.com/DunLug) | [\#97](https://github.com/rstudio/rticles/pull/97), [\#169](https://github.com/rstudio/rticles/pull/169), [\#227](https://github.com/rstudio/rticles/pull/227), [\#263](https://github.com/rstudio/rticles/pull/263), [\#264](https://github.com/rstudio/rticles/pull/264), [\#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | -| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [\@auzaheta](https://github.com/auzaheta) | [\#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | -| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [\@stefanocoretta](https://github.com/stefanocoretta) | [\#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | -| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [\@noamross](https://github.com/noamross) | [\#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | -| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | -| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [\@nuest](https://github.com/nuest) | [\#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | -| [MDPI](https://www.mdpi.com) | [\@dleutnant](https://github.com/dleutnant) | [\#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | -| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [\@oleskiewicz](https://github.com/oleskiewicz) | [\#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | -| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [\@dmkaplan](https://github.com/dmkaplan) | [\#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | -| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [\@zkamvar](https://github.com/zkamvar) | [\#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | -| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [\@stefanocoretta](https://github.com/stefanocoretta) | [\#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | -| [PLOS](https://plos.org/#journals) | [\@sjmgarnier](https://github.com/sjmgarnier) | [\#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | -| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [\@cboettig](https://github.com/cboettig) | [\#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | -| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [\@ThierryO](https://github.com/ThierryO) | [\#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | -| [RSS: Royal Statistical Society](https://rss.org.uk/) | [\@carlganz](https://github.com/carlganz) | [\#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | -| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [\@oguzhanogreden](https://github.com/oguzhanogreden) | [\#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | -| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [\@strakaps](https://github.com/strakaps) | [\#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | -| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [\@ellessenne](https://github.com/ellessenne) | [\#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | -| [Taylor & Francis](https://www.tandfonline.com/) | [\@dleutnant](https://github.com/dleutnant) | [\#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | -| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | +| Journal | Contributors | Pull request | Output format| +|-|-|-|-| +| [ACM: Association for Computings Machinery](https://www.acm.org/publications/about-publications) | [\@ramnathv](https://github.com/ramnathv)| [\#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()`| +| [ACS](https://pubs.acs.org) | [\@yufree](https://github.com/yufree)| [\#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()`| +| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates)| [\@sboysel](https://github.com/sboysel)| [\#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | +| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [\@eliocamp](https://github.com/eliocamp)| [\#199](https://github.com/rstudio/rticles/pull/99)| `agu_article()`| +| [AMS: American Meteorological Society](https://www.ametsoc.org/)| [\@yufree](https://github.com/yufree)| [\#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()`| +| [ASA: American Statistical Association](https://www.amstat.org/)|| [\#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()`| +| [arXiv](https://arxiv.org/) pre-prints based on George Kour's template| [\@alexpghayes](https://github.com)| [\#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()`| +| [Bioinformatics](https://academic.oup.com/bioinformatics) | [\@ShixiangWang](https://github.com/ShixiangWang)| [\#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | +| [Biometrics](https://biometrics.biometricsociety.org) | [\@daltonhance](https://github.com/daltonhance)| [\#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | +| [Bulletin de l'AMQ](https://www.amq.math.ca/bulletin/)| [\@desautm](https://github.com/desautm)| [\#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()`| +| [Copernicus Publications](https://publications.copernicus.org)| [\@nuest](https://github.com/nuest), [\@RLumSK](https://github.com/RLumSK) | [\#172](https://github.com/rstudio/rticles/pull/172), [\#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | +| [CTeX](https://ctan.org/pkg/ctex) ||| `ctex()` | +| [Elsevier](https://www.elsevier.com)| [\@cboettig](https://github.com/cboettig)| [\#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | +| [Frontiers](https://www.frontiersin.org/) | [\@muschellij2](https://github.com/muschellij2)| [\#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()`| +| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [\@Emaasit](https://github.com/Emaasit), [\@espinielli](https://github.com/espinielli), [\@nathanweeks](https://github.com/nathanweeks), [\@DunLug](https://github.com/DunLug) | [\#97](https://github.com/rstudio/rticles/pull/97), [\#169](https://github.com/rstudio/rticles/pull/169), [\#227](https://github.com/rstudio/rticles/pull/227), [\#263](https://github.com/rstudio/rticles/pull/263), [\#264](https://github.com/rstudio/rticles/pull/264), [\#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | +| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [\@auzaheta](https://github.com/auzaheta)| [\#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()`| +| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [\@stefanocoretta](https://github.com/stefanocoretta)| [\#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | +| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/)| [\@noamross](https://github.com/noamross)| [\#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | +| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) ||| `jss_article()`| +| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics)| [\@nuest](https://github.com/nuest)| [\#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | +| [MDPI](https://www.mdpi.com)| [\@dleutnant](https://github.com/dleutnant)| [\#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | +| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras)| [\@oleskiewicz](https://github.com/oleskiewicz)| [\#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()`| +| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [\@dmkaplan](https://github.com/dmkaplan)| [\#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | +| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com)| [\@zkamvar](https://github.com/zkamvar)| [\#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()`| +| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [\@stefanocoretta](https://github.com/stefanocoretta)| [\#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()`| +| [PLOS](https://plos.org/#journals)| [\@sjmgarnier](https://github.com/sjmgarnier)| [\#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | +| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/)| [\@cboettig](https://github.com/cboettig)| [\#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | +| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [\@ThierryO](https://github.com/ThierryO)| [\#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | +| [RSS: Royal Statistical Society](https://rss.org.uk/) | [\@carlganz](https://github.com/carlganz)| [\#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()`| +| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [\@oguzhanogreden](https://github.com/oguzhanogreden)| [\#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | +| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [\@strakaps](https://github.com/strakaps)| [\#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | +| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [\@ellessenne](https://github.com/ellessenne)| [\#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()`| +| [Taylor & Francis](https://www.tandfonline.com/)| [\@dleutnant](https://github.com/dleutnant)| [\#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | +| [The R Journal](https://journal.r-project.org/) ||| `rjournal_article()` | You can also get the list of available journal names with `rticles::journals()`. diff --git a/README.md b/README.md index 4b33bddaf..686089684 100644 --- a/README.md +++ b/README.md @@ -67,42 +67,42 @@ output format and all the assets required by this format. Currently included templates and their contributors are the following: -| Journal | Contributors | Pull request | Output format | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| -| [ACM: Association for Computing Machinery](https://www.acm.org/publications/about-publications) | [@ramnathv](https://github.com/ramnathv) | [\#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | -| [ACS](https://pubs.acs.org) | [@yufree](https://github.com/yufree) | [\#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | -| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [@sboysel](https://github.com/sboysel) | [\#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | -| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [@eliocamp](https://github.com/eliocamp) | [\#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | -| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [@yufree](https://github.com/yufree) | [\#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | -| [ASA: American Statistical Association](https://www.amstat.org/) | | [\#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | -| [arXiv](https://arxiv.org/) pre-prints based on George Kour’s template | [@alexpghayes](https://github.com) | [\#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | -| [Bioinformatics](https://academic.oup.com/bioinformatics) | [@ShixiangWang](https://github.com/ShixiangWang) | [\#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | -| [Biometrics](https://biometrics.biometricsociety.org) | [@daltonhance](https://github.com/daltonhance) | [\#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | -| [Bulletin de l’AMQ](https://www.amq.math.ca/bulletin/) | [@desautm](https://github.com/desautm) | [\#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | -| [Copernicus Publications](https://publications.copernicus.org) | [@nuest](https://github.com/nuest), [@RLumSK](https://github.com/RLumSK) | [\#172](https://github.com/rstudio/rticles/pull/172), [\#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | -| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | -| [Elsevier](https://www.elsevier.com) | [@cboettig](https://github.com/cboettig) | [\#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | -| [Frontiers](https://www.frontiersin.org/) | [@muschellij2](https://github.com/muschellij2) | [\#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | -| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [@Emaasit](https://github.com/Emaasit), [@espinielli](https://github.com/espinielli), [@nathanweeks](https://github.com/nathanweeks), [@DunLug](https://github.com/DunLug) | [\#97](https://github.com/rstudio/rticles/pull/97), [\#169](https://github.com/rstudio/rticles/pull/169), [\#227](https://github.com/rstudio/rticles/pull/227), [\#263](https://github.com/rstudio/rticles/pull/263), [\#264](https://github.com/rstudio/rticles/pull/264), [\#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | -| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [@auzaheta](https://github.com/auzaheta) | [\#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | -| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [@stefanocoretta](https://github.com/stefanocoretta) | [\#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | -| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [@noamross](https://github.com/noamross) | [\#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | -| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | -| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [@nuest](https://github.com/nuest) | [\#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | -| [MDPI](https://www.mdpi.com) | [@dleutnant](https://github.com/dleutnant) | [\#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | -| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [@oleskiewicz](https://github.com/oleskiewicz) | [\#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | -| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [@dmkaplan](https://github.com/dmkaplan) | [\#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | -| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [@zkamvar](https://github.com/zkamvar) | [\#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | -| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [@stefanocoretta](https://github.com/stefanocoretta) | [\#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | -| [PLOS](https://plos.org/#journals) | [@sjmgarnier](https://github.com/sjmgarnier) | [\#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | -| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [@cboettig](https://github.com/cboettig) | [\#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | -| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [@ThierryO](https://github.com/ThierryO) | [\#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | -| [RSS: Royal Statistical Society](https://rss.org.uk/) | [@carlganz](https://github.com/carlganz) | [\#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | -| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [@oguzhanogreden](https://github.com/oguzhanogreden) | [\#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | -| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [@strakaps](https://github.com/strakaps) | [\#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | -| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [@ellessenne](https://github.com/ellessenne) | [\#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | -| [Taylor & Francis](https://www.tandfonline.com/) | [@dleutnant](https://github.com/dleutnant) | [\#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | -| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | +| Journal | Contributors | Pull request | Output format | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| +| [ACM: Association for Computings Machinery](https://www.acm.org/publications/about-publications) | [@ramnathv](https://github.com/ramnathv) | [#8](https://github.com/rstudio/rticles/pull/8) | `acm_article()` | +| [ACS](https://pubs.acs.org) | [@yufree](https://github.com/yufree) | [#15](https://github.com/rstudio/rticles/pull/15) | `acs_article()` | +| [AEA: American Economic Association](https://www.aeaweb.org/journals/policies/templates) | [@sboysel](https://github.com/sboysel) | [#86](https://github.com/rstudio/rticles/pull/86) | `aea_articles()` | +| [AGU](https://agupubs.onlinelibrary.wiley.com/) | [@eliocamp](https://github.com/eliocamp) | [#199](https://github.com/rstudio/rticles/pull/99) | `agu_article()` | +| [AMS: American Meteorological Society](https://www.ametsoc.org/) | [@yufree](https://github.com/yufree) | [#96](https://github.com/rstudio/rticles/pull/96) | `ams_article()` | +| [ASA: American Statistical Association](https://www.amstat.org/) | | [#111](https://github.com/rstudio/rticles/pull/111) | `asa_article()` | +| [arXiv](https://arxiv.org/) pre-prints based on George Kour’s template | [@alexpghayes](https://github.com) | [#236](https://github.com/rstudio/rticles/pull/236) | `arxiv_article()` | +| [Bioinformatics](https://academic.oup.com/bioinformatics) | [@ShixiangWang](https://github.com/ShixiangWang) | [#297](https://github.com/rstudio/rticles/pull/297) | `bioinformatics_article()` | +| [Biometrics](https://biometrics.biometricsociety.org) | [@daltonhance](https://github.com/daltonhance) | [#170](https://github.com/rstudio/rticles/pull/170) | `biometrics_article()` | +| [Bulletin de l’AMQ](https://www.amq.math.ca/bulletin/) | [@desautm](https://github.com/desautm) | [#145](https://github.com/rstudio/rticles/pull/145) | `amq_article()` | +| [Copernicus Publications](https://publications.copernicus.org) | [@nuest](https://github.com/nuest), [@RLumSK](https://github.com/RLumSK) | [#172](https://github.com/rstudio/rticles/pull/172), [#342](https://github.com/rstudio/rticles/pull/342) | `copernicus_article()` | +| [CTeX](https://ctan.org/pkg/ctex) | | | `ctex()` | +| [Elsevier](https://www.elsevier.com) | [@cboettig](https://github.com/cboettig) | [#27](https://github.com/rstudio/rticles/pull/27) | `elsevier_article()` | +| [Frontiers](https://www.frontiersin.org/) | [@muschellij2](https://github.com/muschellij2) | [#211](https://github.com/rstudio/rticles/pull/211) | `frontiers_article()` | +| [IEEE Transaction](http://www.ieee.org/publications_standards/publications/authors/author_templates.html) | [@Emaasit](https://github.com/Emaasit), [@espinielli](https://github.com/espinielli), [@nathanweeks](https://github.com/nathanweeks), [@DunLug](https://github.com/DunLug) | [#97](https://github.com/rstudio/rticles/pull/97), [#169](https://github.com/rstudio/rticles/pull/169), [#227](https://github.com/rstudio/rticles/pull/227), [#263](https://github.com/rstudio/rticles/pull/263), [#264](https://github.com/rstudio/rticles/pull/264), [#265](https://github.com/rstudio/rticles/pull/265) | `ieee_article()` | +| [IMS: Institute of Mathematical Statistics](https://imstat.org/) [AoAS: Annals of Applied Statistics](https://imstat.org/journals-and-publications/annals-of-applied-statistics/) | [@auzaheta](https://github.com/auzaheta) | [#372](https://github.com/rstudio/rticles/pull/372) | `ims_article()` | +| [JASA: Journal of the Acoustical Society of America](https://asa.scitation.org/journal/jas) | [@stefanocoretta](https://github.com/stefanocoretta) | [#364](https://github.com/rstudio/rticles/pull/364) | `jasa_article()` | +| [JOSS: Journal of Open Source Software](https://joss.theoj.org/) [JOSE: Journal of Open Source Education](https://jose.theoj.org/) | [@noamross](https://github.com/noamross) | [#229](https://github.com/rstudio/rticles/pull/229) | `joss_article()` | +| [JSS: Journal of Statistical Software](https://www.jstatsoft.org) | | | `jss_article()` | +| [LIPIcs](https://www.dagstuhl.de/en/publications/lipics) | [@nuest](https://github.com/nuest) | [#288](https://github.com/rstudio/rticles/pull/288) | `lipics_article()` | +| [MDPI](https://www.mdpi.com) | [@dleutnant](https://github.com/dleutnant) | [#147](https://github.com/rstudio/rticles/pull/147) | `mdpi_article()` | +| [MNRAS: Monthly Notices of the Royal Astronomical Society](https://academic.oup.com/mnras) | [@oleskiewicz](https://github.com/oleskiewicz) | [#175](https://github.com/rstudio/rticles/pull/175) | `mnras_article()` | +| [OUP: Oxford University Press](https://academic.oup.com/journals/pages/authors/preparing_your_manuscript) | [@dmkaplan](https://github.com/dmkaplan) | [#284](https://github.com/rstudio/rticles/pull/284) | `oup_articles()` | +| [PeerJ: Journal of Life and Environmental Sciences](https://peerj.com) | [@zkamvar](https://github.com/zkamvar) | [#127](https://github.com/rstudio/rticles/pull/127) | `peerj_article()` | +| [PiHPh: Papers in Historical Phonology](http://journals.ed.ac.uk/pihph/about/submissions) | [@stefanocoretta](https://github.com/stefanocoretta) | [#362](https://github.com/rstudio/rticles/pull/362) | `pihph_article()` | +| [PLOS](https://plos.org/#journals) | [@sjmgarnier](https://github.com/sjmgarnier) | [#12](https://github.com/rstudio/rticles/pull/12) | `plos_article()` | +| [PNAS: Proceedings of the National Academy of Sciences](https://www.pnas.org/) | [@cboettig](https://github.com/cboettig) | [#72](https://github.com/rstudio/rticles/pull/72) | `pnas_article()` | +| [RSOS: Royal Society Open Science](https://www.royalsocietypublishing.org/journal/rsos) | [@ThierryO](https://github.com/ThierryO) | [#135](https://github.com/rstudio/rticles/pull/135) | `rsos_article()` | +| [RSS: Royal Statistical Society](https://rss.org.uk/) | [@carlganz](https://github.com/carlganz) | [#110](https://github.com/rstudio/rticles/pull/110) | `rss_article()` | +| [Sage](https://uk.sagepub.com/en-gb/eur/manuscript-submission-guidelines) | [@oguzhanogreden](https://github.com/oguzhanogreden) | [#181](https://github.com/rstudio/rticles/pull/181) | `sage_article()` | +| [Springer](https://www.springer.com/gp/livingreviews/latex-templates) | [@strakaps](https://github.com/strakaps) | [#164](https://github.com/rstudio/rticles/pull/164) | `springer_article()` | +| [SIM: Statistics in Medicine](https://onlinelibrary.wiley.com/journal/10970258) | [@ellessenne](https://github.com/ellessenne) | [#231](https://github.com/rstudio/rticles/pull/231) | `sim_article()` | +| [Taylor & Francis](https://www.tandfonline.com/) | [@dleutnant](https://github.com/dleutnant) | [#218](https://github.com/rstudio/rticles/pull/218) | `tf_article()` | +| [The R Journal](https://journal.r-project.org/) | | | `rjournal_article()` | You can also get the list of available journal names with `rticles::journals()`. @@ -118,7 +118,8 @@ and R code and its output can be seamlessly included using There are two main places to get help: -1. The [RStudio community](https://community.rstudio.com/tag/rticles) +1. The [RStudio + community](https://community.rstudio.com/tags/c/R-Markdown/10/rticles) is a friendly place to ask any questions about **rticles**. Be sure to use the `rticles` tag. From 3d77cc6ed3657aaa40e8f42b366f22d6c58b70c6 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 12:04:32 +0200 Subject: [PATCH 11/66] Add a pointer to bookdown book --- vignettes/rticles.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/rticles.Rmd b/vignettes/rticles.Rmd index 00786d9a4..5f326d627 100644 --- a/vignettes/rticles.Rmd +++ b/vignettes/rticles.Rmd @@ -24,7 +24,7 @@ View the list of available journal names with `rticles::journals()`. ## Figure numbering & cross-references -You may want to use features of the [**bookdown** package](https://pkgs.rstudio.com/bookdown/) like automatic numbering and cross-referencing of figures and tables in your article. To do this, you'll need to edit your YAML to: +You may want to use features of the [**bookdown** package](https://pkgs.rstudio.com/bookdown/) like automatic numbering and cross-referencing of figures and tables in your article. To do this, you'll need to follow [**bookdown** documentation](https://bookdown.org/yihui/bookdown/a-single-document.html), i.e. to edit your YAML to: + Switch to the `bookdown::pdf_book` output format, and From fc3e7fd943b0970ad0939f65706fc2f15a47c707 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 12:17:37 +0200 Subject: [PATCH 12/66] Don't create a new vignette and only a Getting started articles for pkgdown website --- .Rbuildignore | 5 +++-- README.Rmd | 2 +- vignettes/rticles.Rmd | 7 +------ {man/fragments => vignettes}/usage.md | 0 4 files changed, 5 insertions(+), 9 deletions(-) rename {man/fragments => vignettes}/usage.md (100%) diff --git a/.Rbuildignore b/.Rbuildignore index 4cd707339..1f10f98b1 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -4,9 +4,10 @@ ^\.travis\.yml$ ^\.github$ ^README\.md$ +^README\.Rmd$ ^tools/ ^_pkgdown\.yml$ ^reference$ ^pkgdown$ -^vignettes/articles$ -^README\.Rmd$ +^vignettes$ + diff --git a/README.Rmd b/README.Rmd index a8563435e..dba202920 100644 --- a/README.Rmd +++ b/README.Rmd @@ -34,7 +34,7 @@ remotes::install_github("rstudio/rticles") ## Using rticles -```{r child="man/fragments/usage.md"} +```{r child="vignettes/usage.md"} ``` ## Templates diff --git a/vignettes/rticles.Rmd b/vignettes/rticles.Rmd index 5f326d627..ca898176f 100644 --- a/vignettes/rticles.Rmd +++ b/vignettes/rticles.Rmd @@ -1,10 +1,5 @@ --- title: "Get started" -output: rmarkdown::html_vignette -vignette: > - %\VignetteIndexEntry{Get started} - %\VignetteEngine{knitr::rmarkdown} - %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} @@ -16,7 +11,7 @@ knitr::opts_chunk$set( ## Accessing templates -```{r child="../man/fragments/usage.md"} +```{r child="usage.md"} ``` diff --git a/man/fragments/usage.md b/vignettes/usage.md similarity index 100% rename from man/fragments/usage.md rename to vignettes/usage.md From 751fc80f0200bfd2641a53865229156a33681780 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 12:22:51 +0200 Subject: [PATCH 13/66] Update COC `quillt::use_coc()` --- .github/CODE_OF_CONDUCT.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index b36903fa8..ebcf2a918 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -59,8 +59,8 @@ representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at [INSERT CONTACT -METHOD]. All complaints will be reviewed and investigated promptly and fairly. +reported to the community leaders responsible for enforcement at codeofconduct@rstudio.com. +All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. @@ -115,8 +115,7 @@ community. This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, -available at https://www.contributor-covenant.org/version/2/0/ -code_of_conduct.html. +available at . Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity). @@ -124,5 +123,4 @@ enforcement ladder](https://github.com/mozilla/diversity). [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at https:// -www.contributor-covenant.org/translations. +. Translations are available at . From 92c1bd921357815715a88938682756d4c988c141 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 15:57:41 +0200 Subject: [PATCH 14/66] let's try building a GIF and PDF to show in a gallery - Build from template skeleton.Rmd - Caching mechanism to only rebuild when any of the template file has changed. --- R/utils.R | 19 ++++++++++ vignettes/articles/.gitignore | 2 + vignettes/articles/examples.Rmd | 65 +++++++++++++++++++++++++++++---- 3 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 vignettes/articles/.gitignore diff --git a/R/utils.R b/R/utils.R index f3397b871..21aba3c10 100644 --- a/R/utils.R +++ b/R/utils.R @@ -111,3 +111,22 @@ post_process_authors <- function(text) { # return modified text text } + + +# render a skeleton in a temp directory +render_draft <- function(journal, output_options = NULL, quiet = FALSE) { + dir <- tempfile() + dir.create(dir) + oldwd <- setwd(dir) + on.exit(setwd(oldwd), add = TRUE) + # create a draft of the format + doc <- paste0(journal,"_article",".Rmd") + rmarkdown::draft(doc, template = journal, package = "rticles", create_dir = FALSE, edit = FALSE) + # render the file in the temp dir + message('Rendering the ', journal, ' format...', + if (!is.null(output_options)) " (with output options)") + output_file <- xfun::Rscript_call( + fun = rmarkdown::render, + args = list(doc, output_options = output_options, quiet = quiet) + ) +} diff --git a/vignettes/articles/.gitignore b/vignettes/articles/.gitignore new file mode 100644 index 000000000..c15b9ac59 --- /dev/null +++ b/vignettes/articles/.gitignore @@ -0,0 +1,2 @@ +resources +cache diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index abd171d67..80f98762e 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -1,19 +1,68 @@ --- title: "Example projects" resource_files: - - images/ + - resources/ --- -```{r setup, include = FALSE} -library(quillt) -``` +```{r, message = FALSE, warning = FALSE, include = FALSE} +library(rticles) +library(magick) -The examples below illustrate the use of rticles with various packages and layouts. If you want to learn more about how the dashboards were created each example includes a link to its source code. +# dir setup +hash_db_dir <- "cache" +if (!dir.exists(hash_db_dir)) dir.create(hash_db_dir) +out_dir <- "resources" +if (!dir.exists(out_dir)) dir.create(out_dir) +for (journal in journals()) { + hash_db_file <- file.path(hash_db_dir, xfun::with_ext(journal, ".rds")) + out_files <- file.path(out_dir, xfun::with_ext(paste0(journal, "_article"), c("gif", "pdf"))) + # clean cache if no more files + if (!all(file.exists(out_files))) unlink(hash_db_file) + # Should we render new resource ? + resource_path <- rticles:::pkg_file("rmarkdown", "templates", journal) + template_files <- list.files(resource_path, recursive = TRUE) + template_files <- setNames( + file.path(resource_path, template_files), + nm = template_files) + new_hash_db <- lapply(template_files, rlang::hash_file) + if (file.exists(hash_db_file)) { + old_hash_db <- readRDS(hash_db_file) + if (identical(old_hash_db, new_hash_db)) { + message("No changes in templates. Skipping ", + journal, " format.") + next + } + } + message("Rendering to PDF...") + out_pdf <- xfun::try_silent(rticles:::render_draft(journal, quiet = TRUE)) + if (inherits(out_pdf, "try-error")) { + warning("Error with rendering format ", journal, + immediate. = TRUE) + next + } -```{r, echo=FALSE} -examples(yml = "examples.yml") + message("Converting to GIF...") + pdf_content <- image_read_pdf(out_pdf) + out_gif <- image_write_gif( + image = pdf_content, + path = xfun::with_ext(out_pdf, "gif"), + delay = 1) + message("Retrieving built files.") + # specific treatment for rjournal name + if (journal == "rjournal") { + file.rename(out_pdf, out_pdf <- file.path(dirname(out_pdf), "rjournal_article.pdf")) + file.rename(out_gif, out_gif <- file.path(dirname(out_gif), "rjournal_article.gif")) + } + file.copy(out_pdf, out_dir) + file.copy(out_gif, out_dir) + # clean temp dir + unlink(dirname(out_pdf), recursive = TRUE) + # saving the new hash + saveRDS(new_hash_db, hash_db_file) +} ``` -**blogdown** repo contains an example on how to dynamically generate the `example.yml` taking screenshot of the featured examples. See [`example.Rmd`](https://github.com/rstudio/blogdown/blob/master/vignettes/articles/examples.Rmd) in the repository. + + From 09f3c49755ad0096fd264a3d261ca19e1e16c684 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 16:04:48 +0200 Subject: [PATCH 15/66] update workflow according to new template --- .github/workflows/pkgdown.yaml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 233eb6451..8fbddd92c 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -35,9 +35,11 @@ jobs: - name: Cache R packages uses: actions/cache@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} - restore-keys: ${{ runner.os }}-${{ steps.install-r.outputs.installed-r-version }}-1- + path: | + ${{ env.R_LIBS_USER }}/* + !${{ env.R_LIBS_USER }}/pak + key: ubuntu-18.04-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} + restore-keys: ubuntu-18.04-${{ steps.install-r.outputs.installed-r-version }}-1- - name: Install system dependencies if: runner.os == 'Linux' @@ -48,7 +50,7 @@ jobs: - name: Install package and dependencies run: | - pak::local_install_dev_deps(upgrade = TRUE) + pak::local_install_dev_deps(upgrade = TRUE, dependencies = c("all", "Config/Needs/website")) pak::pkg_install("r-lib/pkgdown") pak::pkg_install("rstudio/quillt") shell: Rscript {0} @@ -59,7 +61,8 @@ jobs: - name: Cache some pkgdown assets uses: actions/cache@v2 with: - path: 'vignettes/articles/images/*.png' + path: + - 'vignettes/articles/images/*.png' key: 1-${{ hashFiles('vignettes/articles/examples.yml') }} - name: Build pkgdown site From dec2773bb4c5166edf9465f957925379c8dc376c Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 16:26:59 +0200 Subject: [PATCH 16/66] Add resources for pkgdown website to GHA cache --- .github/workflows/pkgdown.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 8fbddd92c..36026a4b2 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -61,9 +61,11 @@ jobs: - name: Cache some pkgdown assets uses: actions/cache@v2 with: - path: - - 'vignettes/articles/images/*.png' - key: 1-${{ hashFiles('vignettes/articles/examples.yml') }} + path: | + vignettes/articles/resources/*.gif + vignettes/articles/resources/*.pdf + vignettes/articles/cache/*.rds + key: 1-${{ hashFiles('vignettes/articles/examples.Rmd') }} - name: Build pkgdown site run: pkgdown::build_site(new_process = FALSE) From ff2676a0d1e0a0abd996753bcf553eb37e7981d3 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 16:27:09 +0200 Subject: [PATCH 17/66] Add deps for website --- DESCRIPTION | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION b/DESCRIPTION index 1d25d4286..371a266bb 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -59,3 +59,4 @@ RoxygenNote: 7.1.1 Suggests: testit, bookdown, xtable Encoding: UTF-8 VignetteBuilder: knitr +Config/Needs/website: magick, rstudio/quillt, rlang From fa07940b402d66cc8635fc4522b627f462dbe760 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 16:37:42 +0200 Subject: [PATCH 18/66] Install magick system deps This is not done when installing from Config/Needs/website --- .github/workflows/pkgdown.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 36026a4b2..6cf569e3d 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -46,6 +46,7 @@ jobs: run: | pak::local_system_requirements(execute = TRUE) pak::pkg_system_requirements("pkgdown", execute = TRUE) + pak::pkg_system_requirements("magick", execute = TRUE) shell: Rscript {0} - name: Install package and dependencies From 40fd86ec4e5205b2fad2cc89e8f3fc18ee9d4cb8 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 16:48:07 +0200 Subject: [PATCH 19/66] use tools::md5sum as rlang::hash_files is still on dev version --- DESCRIPTION | 2 +- vignettes/articles/examples.Rmd | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 371a266bb..8d48bdbf7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -59,4 +59,4 @@ RoxygenNote: 7.1.1 Suggests: testit, bookdown, xtable Encoding: UTF-8 VignetteBuilder: knitr -Config/Needs/website: magick, rstudio/quillt, rlang +Config/Needs/website: magick, rstudio/quillt diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 80f98762e..57d6ca8db 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -4,8 +4,11 @@ resource_files: - resources/ --- - ```{r, message = FALSE, warning = FALSE, include = FALSE} +# this is to generate the GIF and PDF for the gallery +# This is done on GHA and there is a caching mechanism so that a new rendering +# occurs only when needed + library(rticles) library(magick) @@ -26,11 +29,11 @@ for (journal in journals()) { template_files <- setNames( file.path(resource_path, template_files), nm = template_files) - new_hash_db <- lapply(template_files, rlang::hash_file) + new_hash_db <- lapply(template_files, function(x) unname(tools::md5sum(x))) if (file.exists(hash_db_file)) { old_hash_db <- readRDS(hash_db_file) if (identical(old_hash_db, new_hash_db)) { - message("No changes in templates. Skipping ", + message("No changes in templates. Skipping ", journal, " format.") next } @@ -38,15 +41,15 @@ for (journal in journals()) { message("Rendering to PDF...") out_pdf <- xfun::try_silent(rticles:::render_draft(journal, quiet = TRUE)) if (inherits(out_pdf, "try-error")) { - warning("Error with rendering format ", journal, + warning("Error with rendering format ", journal, immediate. = TRUE) next - } + } message("Converting to GIF...") pdf_content <- image_read_pdf(out_pdf) out_gif <- image_write_gif( - image = pdf_content, + image = pdf_content, path = xfun::with_ext(out_pdf, "gif"), delay = 1) message("Retrieving built files.") From 84c663d0f05c6495ca7993f0a5f81b0ff607390d Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:05:47 +0200 Subject: [PATCH 20/66] Add a function to get template folder path --- R/utils.R | 6 ++++-- tests/testit/test-formats.R | 2 +- vignettes/articles/examples.Rmd | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/R/utils.R b/R/utils.R index 21aba3c10..7d2964465 100644 --- a/R/utils.R +++ b/R/utils.R @@ -15,11 +15,11 @@ #' @examples #' rticles::journals() journals <- function() { - sort(dir(pkg_file("rmarkdown", "templates"))) + sort(dir(pkg_file_template())) } find_resource <- function(template, file = 'template.tex') { - res <- pkg_file("rmarkdown", "templates", template, "resources", file) + res <- pkg_file_template(template, "resources", file) if (res == "") stop( "Couldn't find template file ", template, "/resources/", file, call. = FALSE ) @@ -86,6 +86,8 @@ get_list_element <- function(x, names) { pkg_file <- function(...) system.file(..., package = "rticles") +pkg_file_template <- function(...) pkg_file("rmarkdown", "templates", ...) + # utils for post processing tex files # correct authors field to the form "Author 1, Author 2, and Author 3" diff --git a/tests/testit/test-formats.R b/tests/testit/test-formats.R index 27cacd25d..51c7054e7 100644 --- a/tests/testit/test-formats.R +++ b/tests/testit/test-formats.R @@ -14,7 +14,7 @@ test_format <- function(name, output_options = NULL, os_skip = NULL) { # create a draft of the format testdoc <- paste0(name,"_article",".Rmd") rmarkdown::draft( - testdoc, pkg_file("rmarkdown", "templates", name), + testdoc, pkg_file_template(name), create_dir = FALSE, edit = FALSE ) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 57d6ca8db..3e9cdefe8 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -24,7 +24,7 @@ for (journal in journals()) { # clean cache if no more files if (!all(file.exists(out_files))) unlink(hash_db_file) # Should we render new resource ? - resource_path <- rticles:::pkg_file("rmarkdown", "templates", journal) + resource_path <- rticles:::pkg_file_template(journal) template_files <- list.files(resource_path, recursive = TRUE) template_files <- setNames( file.path(resource_path, template_files), From 8176ac866e172c2fe831f6fdbc174ce5871a8218 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:21:52 +0200 Subject: [PATCH 21/66] build example.yaml for the gallery directly during build * Ignore examples.yml --- vignettes/articles/.gitignore | 1 + vignettes/articles/examples.Rmd | 27 +++++++++++++++++++++++++++ vignettes/articles/examples.yml | 7 ------- 3 files changed, 28 insertions(+), 7 deletions(-) delete mode 100644 vignettes/articles/examples.yml diff --git a/vignettes/articles/.gitignore b/vignettes/articles/.gitignore index c15b9ac59..44b9a86d6 100644 --- a/vignettes/articles/.gitignore +++ b/vignettes/articles/.gitignore @@ -1,2 +1,3 @@ resources cache +examples.yml diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 3e9cdefe8..bb03fe9a7 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -67,5 +67,32 @@ for (journal in journals()) { } ``` +```{r, include = FALSE, eval=FALSE} +# We generate the YAML file on the fly to render the gallery +# list of sites +articles <- lapply(journals(), function(journal) { + template_path <- rticles:::pkg_file_template(journal) + name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name + img = file.path("resources", paste0(journal, "_article.gif")) + href = file.path("resources", paste0(journal, "_article.pdf")) + repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" + if (!file.exists(img) || !file.exists(href)) return(list()) + list( + title = sprintf("%s - %s", journal, name), + img = img, + href = href, + source = paste0(repo_url, journal), + showcase = TRUE + ) +}) +yaml::write_yaml(articles, "examples.yml") +``` + + +The examples below illustrate all the article's template included into this package. + +```{r, echo=FALSE} +quillt::examples(yml = "examples.yml") +``` diff --git a/vignettes/articles/examples.yml b/vignettes/articles/examples.yml deleted file mode 100644 index fc1308247..000000000 --- a/vignettes/articles/examples.yml +++ /dev/null @@ -1,7 +0,0 @@ -# - title: Title to use -# img: image local or url -# href: link to the example -# source: link to the source repo -# # (optional) allows to filter examples -# showcase: true -# shiny: true From 1dc0d749c0d8146ab10924bb891cf5ddc5c4a4b2 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:29:10 +0200 Subject: [PATCH 22/66] Install tinytex, full prebuilt version --- .github/workflows/pkgdown.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 6cf569e3d..d2a632a1a 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -26,6 +26,11 @@ jobs: - uses: r-lib/actions/setup-pandoc@v1 + - uses: r-lib/actions/setup-tinytex@v1 + env: + # install full prebuilt version + TINYTEX_INSTALLER: TinyTeX + - name: Install pak and query dependencies run: | install.packages("pak", repos = "https://r-lib.github.io/p/pak/dev/") From 8f35a6ddfbbf06792c97a350717167ee1df5defa Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:35:10 +0200 Subject: [PATCH 23/66] we need pdftools for magick not installed because it is a suggested package --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index addff504a..b04842238 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -59,4 +59,4 @@ RoxygenNote: 7.1.1 Suggests: testit, bookdown, xtable Encoding: UTF-8 VignetteBuilder: knitr -Config/Needs/website: magick, rstudio/quillt +Config/Needs/website: magick, pdftools, rstudio/quillt From 5fcd6f5f7d175c3ff56ebd4608ce072dd4cf90e2 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:42:58 +0200 Subject: [PATCH 24/66] We also need system deps for this --- .github/workflows/pkgdown.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index d2a632a1a..e3388a307 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -52,6 +52,7 @@ jobs: pak::local_system_requirements(execute = TRUE) pak::pkg_system_requirements("pkgdown", execute = TRUE) pak::pkg_system_requirements("magick", execute = TRUE) + pak::pkg_system_requirements("pdftools", execute = TRUE) shell: Rscript {0} - name: Install package and dependencies From 7e8e7ccd43f940c75064e35174ecc43bc00202ea Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:49:27 +0200 Subject: [PATCH 25/66] Seems we also need gifski --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index b04842238..7c5c04294 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -59,4 +59,4 @@ RoxygenNote: 7.1.1 Suggests: testit, bookdown, xtable Encoding: UTF-8 VignetteBuilder: knitr -Config/Needs/website: magick, pdftools, rstudio/quillt +Config/Needs/website: magick, pdftools, gifski, rstudio/quillt From b34ec5c9c515adad780276d568d7128045879f46 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 17:58:03 +0200 Subject: [PATCH 26/66] swtich to macos because of ubuntu resource limitation This is causing issues to create the GIF from the PDF. We have this kind of error: https://github.com/phw/peek/issues/139 --- .github/workflows/pkgdown.yaml | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index e3388a307..68fb85170 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -14,9 +14,8 @@ name: pkgdown jobs: pkgdown: if: ${{ github.event_name == 'push' || startsWith(github.head_ref, 'pkgdown/') }} - runs-on: ubuntu-18.04 + runs-on: macos-latest env: - RSPM: https://packagemanager.rstudio.com/cran/__linux__/bionic/latest GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 @@ -43,17 +42,8 @@ jobs: path: | ${{ env.R_LIBS_USER }}/* !${{ env.R_LIBS_USER }}/pak - key: ubuntu-18.04-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} - restore-keys: ubuntu-18.04-${{ steps.install-r.outputs.installed-r-version }}-1- - - - name: Install system dependencies - if: runner.os == 'Linux' - run: | - pak::local_system_requirements(execute = TRUE) - pak::pkg_system_requirements("pkgdown", execute = TRUE) - pak::pkg_system_requirements("magick", execute = TRUE) - pak::pkg_system_requirements("pdftools", execute = TRUE) - shell: Rscript {0} + key: macos-latest-${{ steps.install-r.outputs.installed-r-version }}-1-${{ hashFiles('.github/r-depends.rds') }} + restore-keys: macos-latest-${{ steps.install-r.outputs.installed-r-version }}-1- - name: Install package and dependencies run: | From d154c56c43c6d90ceba85fb2ca34c2980fd4608a Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 18:44:55 +0200 Subject: [PATCH 27/66] This should be eval = TRUE --- vignettes/articles/examples.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index bb03fe9a7..38576b1a8 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -67,7 +67,7 @@ for (journal in journals()) { } ``` -```{r, include = FALSE, eval=FALSE} +```{r, include = FALSE} # We generate the YAML file on the fly to render the gallery # list of sites From ea3e582be6686e8a87006652776bb526cd1cf6fe Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 19:25:44 +0200 Subject: [PATCH 28/66] trigger build to check caching From 3b9fbb0e19919475ca4ec8993108af7ed80af72b Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 19:57:21 +0200 Subject: [PATCH 29/66] cache folder may need to be explicitly set for caching to work --- vignettes/articles/examples.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 38576b1a8..5a847a560 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -1,7 +1,8 @@ --- title: "Example projects" resource_files: - - resources/ + - resources + - cache --- ```{r, message = FALSE, warning = FALSE, include = FALSE} From 5bdea8036ddbba750a9394e848d8ac96032582a8 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 20:36:55 +0200 Subject: [PATCH 30/66] trigger build to check caching From 8d1bbdaac9274f6b3787bdffa997775b73124a6c Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Wed, 21 Jul 2021 21:15:04 +0200 Subject: [PATCH 31/66] trigger build to check caching From bee037af4ce80f0ee8a3864115470d706d03efaf Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 00:05:07 +0200 Subject: [PATCH 32/66] Ignore ctex and print everything for debug --- vignettes/articles/examples.Rmd | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 5a847a560..96af55b2a 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -5,7 +5,9 @@ resource_files: - cache --- -```{r, message = FALSE, warning = FALSE, include = FALSE} +**This is work in progress and any chunk below is shown for debug** + +```{r, message = TRUE, warning = TRUE, include = TRUE} # this is to generate the GIF and PDF for the gallery # This is done on GHA and there is a caching mechanism so that a new rendering # occurs only when needed @@ -19,7 +21,10 @@ if (!dir.exists(hash_db_dir)) dir.create(hash_db_dir) out_dir <- "resources" if (!dir.exists(out_dir)) dir.create(out_dir) -for (journal in journals()) { +# exclude ctex for now +journals <- setdiff(journals(), "ctex") + +for (journal in journals) { hash_db_file <- file.path(hash_db_dir, xfun::with_ext(journal, ".rds")) out_files <- file.path(out_dir, xfun::with_ext(paste0(journal, "_article"), c("gif", "pdf"))) # clean cache if no more files @@ -68,12 +73,11 @@ for (journal in journals()) { } ``` -```{r, include = FALSE} +```{r, include = TRUE} # We generate the YAML file on the fly to render the gallery # list of sites articles <- lapply(journals(), function(journal) { - template_path <- rticles:::pkg_file_template(journal) name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name img = file.path("resources", paste0(journal, "_article.gif")) href = file.path("resources", paste0(journal, "_article.pdf")) @@ -88,9 +92,12 @@ articles <- lapply(journals(), function(journal) { ) }) +articles <- Filter(length, articles) + yaml::write_yaml(articles, "examples.yml") ``` +--- The examples below illustrate all the article's template included into this package. From a90c000a5a6e3996b5b3954d8e45d5342fbf0a7b Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 00:30:54 +0200 Subject: [PATCH 33/66] trigger build to check caching From 03d9794bec3d84f7125569eafb1534625767d715 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 00:38:25 +0200 Subject: [PATCH 34/66] I am now sure the caching mechanism is working --- vignettes/articles/examples.Rmd | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 96af55b2a..1147714d0 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -5,9 +5,7 @@ resource_files: - cache --- -**This is work in progress and any chunk below is shown for debug** - -```{r, message = TRUE, warning = TRUE, include = TRUE} +```{r, message = TRUE, warning = TRUE, include = FALSE} # this is to generate the GIF and PDF for the gallery # This is done on GHA and there is a caching mechanism so that a new rendering # occurs only when needed @@ -73,7 +71,7 @@ for (journal in journals) { } ``` -```{r, include = TRUE} +```{r, include = FALSE} # We generate the YAML file on the fly to render the gallery # list of sites @@ -97,8 +95,6 @@ articles <- Filter(length, articles) yaml::write_yaml(articles, "examples.yml") ``` ---- - The examples below illustrate all the article's template included into this package. ```{r, echo=FALSE} From 46d7688990d1d8d42ee119c91134ab0ec0ca4514 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 00:50:21 +0200 Subject: [PATCH 35/66] cache as resource_files is not needed in fact --- vignettes/articles/examples.Rmd | 1 - 1 file changed, 1 deletion(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 1147714d0..16cc6469d 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -2,7 +2,6 @@ title: "Example projects" resource_files: - resources - - cache --- ```{r, message = TRUE, warning = TRUE, include = FALSE} From d8a404dff83b1cb458941d8277f36df083530494 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 01:10:27 +0200 Subject: [PATCH 36/66] trigger build to check caching From 77a9c09bef3db1b657ba301c53767d815b82f6b4 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Thu, 22 Jul 2021 18:15:29 +0200 Subject: [PATCH 37/66] Use a two columns layout for example page --- vignettes/articles/examples.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 16cc6469d..2e374b52e 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -97,5 +97,5 @@ yaml::write_yaml(articles, "examples.yml") The examples below illustrate all the article's template included into this package. ```{r, echo=FALSE} -quillt::examples(yml = "examples.yml") +quillt::examples(yml = "examples.yml", ncol = 2) ``` From 3fb7803ef7928f8df90c6703dedc3ec3c3e48c84 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 18:28:33 +0200 Subject: [PATCH 38/66] Use child document to be more specific on GHA cache invalidation This way we can change the example page layout without having to recompute everything --- .github/workflows/pkgdown.yaml | 2 +- vignettes/articles/_child_examples.Rmd | 69 ++++++++++++++++++++++++++ vignettes/articles/examples.Rmd | 67 +------------------------ 3 files changed, 72 insertions(+), 66 deletions(-) create mode 100644 vignettes/articles/_child_examples.Rmd diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 68fb85170..332e220a7 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -62,7 +62,7 @@ jobs: vignettes/articles/resources/*.gif vignettes/articles/resources/*.pdf vignettes/articles/cache/*.rds - key: 1-${{ hashFiles('vignettes/articles/examples.Rmd') }} + key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }} - name: Build pkgdown site run: pkgdown::build_site(new_process = FALSE) diff --git a/vignettes/articles/_child_examples.Rmd b/vignettes/articles/_child_examples.Rmd new file mode 100644 index 000000000..189caa52e --- /dev/null +++ b/vignettes/articles/_child_examples.Rmd @@ -0,0 +1,69 @@ +--- +title: "child of Examples.Rmd" +--- + +```{r, message = TRUE, warning = TRUE, include = FALSE} +# this is to generate the GIF and PDF for the gallery +# This is done on GHA and there is a caching mechanism so that a new rendering +# occurs only when needed + +library(rticles) +library(magick) + +# dir setup +hash_db_dir <- "cache" +if (!dir.exists(hash_db_dir)) dir.create(hash_db_dir) +out_dir <- "resources" +if (!dir.exists(out_dir)) dir.create(out_dir) + +# exclude ctex for now +journals <- setdiff(journals(), "ctex") + +for (journal in journals) { + hash_db_file <- file.path(hash_db_dir, xfun::with_ext(journal, ".rds")) + out_files <- file.path(out_dir, xfun::with_ext(paste0(journal, "_article"), c("gif", "pdf"))) + # clean cache if no more files + if (!all(file.exists(out_files))) unlink(hash_db_file) + # Should we render new resource ? + resource_path <- rticles:::pkg_file_template(journal) + template_files <- list.files(resource_path, recursive = TRUE) + template_files <- setNames( + file.path(resource_path, template_files), + nm = template_files) + new_hash_db <- lapply(template_files, function(x) unname(tools::md5sum(x))) + if (file.exists(hash_db_file)) { + old_hash_db <- readRDS(hash_db_file) + if (identical(old_hash_db, new_hash_db)) { + message("No changes in templates. Skipping ", + journal, " format.") + next + } + } + message("Rendering to PDF...") + out_pdf <- xfun::try_silent(rticles:::render_draft(journal, quiet = TRUE)) + if (inherits(out_pdf, "try-error")) { + warning("Error with rendering format ", journal, + immediate. = TRUE) + next + } + + message("Converting to GIF...") + pdf_content <- image_read_pdf(out_pdf) + out_gif <- image_write_gif( + image = pdf_content, + path = xfun::with_ext(out_pdf, "gif"), + delay = 1) + message("Retrieving built files.") + # specific treatment for rjournal name + if (journal == "rjournal") { + file.rename(out_pdf, out_pdf <- file.path(dirname(out_pdf), "rjournal_article.pdf")) + file.rename(out_gif, out_gif <- file.path(dirname(out_gif), "rjournal_article.gif")) + } + file.copy(out_pdf, out_dir) + file.copy(out_gif, out_dir) + # clean temp dir + unlink(dirname(out_pdf), recursive = TRUE) + # saving the new hash + saveRDS(new_hash_db, hash_db_file) +} +``` diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 2e374b52e..75c4890be 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -1,73 +1,10 @@ --- -title: "Example projects" +title: "Example of journal's templates" resource_files: - resources --- -```{r, message = TRUE, warning = TRUE, include = FALSE} -# this is to generate the GIF and PDF for the gallery -# This is done on GHA and there is a caching mechanism so that a new rendering -# occurs only when needed - -library(rticles) -library(magick) - -# dir setup -hash_db_dir <- "cache" -if (!dir.exists(hash_db_dir)) dir.create(hash_db_dir) -out_dir <- "resources" -if (!dir.exists(out_dir)) dir.create(out_dir) - -# exclude ctex for now -journals <- setdiff(journals(), "ctex") - -for (journal in journals) { - hash_db_file <- file.path(hash_db_dir, xfun::with_ext(journal, ".rds")) - out_files <- file.path(out_dir, xfun::with_ext(paste0(journal, "_article"), c("gif", "pdf"))) - # clean cache if no more files - if (!all(file.exists(out_files))) unlink(hash_db_file) - # Should we render new resource ? - resource_path <- rticles:::pkg_file_template(journal) - template_files <- list.files(resource_path, recursive = TRUE) - template_files <- setNames( - file.path(resource_path, template_files), - nm = template_files) - new_hash_db <- lapply(template_files, function(x) unname(tools::md5sum(x))) - if (file.exists(hash_db_file)) { - old_hash_db <- readRDS(hash_db_file) - if (identical(old_hash_db, new_hash_db)) { - message("No changes in templates. Skipping ", - journal, " format.") - next - } - } - message("Rendering to PDF...") - out_pdf <- xfun::try_silent(rticles:::render_draft(journal, quiet = TRUE)) - if (inherits(out_pdf, "try-error")) { - warning("Error with rendering format ", journal, - immediate. = TRUE) - next - } - - message("Converting to GIF...") - pdf_content <- image_read_pdf(out_pdf) - out_gif <- image_write_gif( - image = pdf_content, - path = xfun::with_ext(out_pdf, "gif"), - delay = 1) - message("Retrieving built files.") - # specific treatment for rjournal name - if (journal == "rjournal") { - file.rename(out_pdf, out_pdf <- file.path(dirname(out_pdf), "rjournal_article.pdf")) - file.rename(out_gif, out_gif <- file.path(dirname(out_gif), "rjournal_article.gif")) - } - file.copy(out_pdf, out_dir) - file.copy(out_gif, out_dir) - # clean temp dir - unlink(dirname(out_pdf), recursive = TRUE) - # saving the new hash - saveRDS(new_hash_db, hash_db_file) -} +```{r, child = "_child_examples.Rmd"} ``` ```{r, include = FALSE} From 760df2068615a22a6247fe7bb86bb55051129153 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 19:11:26 +0200 Subject: [PATCH 39/66] Try with a linear layout --- vignettes/articles/examples.Rmd | 40 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 75c4890be..fe0a1d66a 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -4,6 +4,11 @@ resource_files: - resources --- +```{r, setup, include = FALSE} +library(rticles) +``` + + ```{r, child = "_child_examples.Rmd"} ``` @@ -19,20 +24,43 @@ articles <- lapply(journals(), function(journal) { if (!file.exists(img) || !file.exists(href)) return(list()) list( title = sprintf("%s - %s", journal, name), + fun = sprintf("%s_article", journal), img = img, href = href, - source = paste0(repo_url, journal), - showcase = TRUE + source = paste0(repo_url, journal) ) }) articles <- Filter(length, articles) - -yaml::write_yaml(articles, "examples.yml") ``` The examples below illustrate all the article's template included into this package. -```{r, echo=FALSE} -quillt::examples(yml = "examples.yml", ncol = 2) +```{r, include = FALSE} +src <- lapply(articles, function(article) { + glue::glue_data(article, paste( + "## {title}", + "", + "```yaml", + "output: {fun}", + "```", + "", + "[![]({img})]({href})", + "", + "[Source]({source})", + "\n", sep = "\n" + )) +}) +res <- knitr::knit_child(text = unlist(src), quiet = TRUE) +``` + +`r res` + +```{css} +img { + border: unset; + border-style: solid; + border-color: #FEDB00; +} ``` + From 42a304cebcb2679437afd5dbf7e2ee940976a5e4 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 19:13:24 +0200 Subject: [PATCH 40/66] Push another layout for demo purposes --- vignettes/articles/examples_grid.Rmd | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 vignettes/articles/examples_grid.Rmd diff --git a/vignettes/articles/examples_grid.Rmd b/vignettes/articles/examples_grid.Rmd new file mode 100644 index 000000000..75c4890be --- /dev/null +++ b/vignettes/articles/examples_grid.Rmd @@ -0,0 +1,38 @@ +--- +title: "Example of journal's templates" +resource_files: + - resources +--- + +```{r, child = "_child_examples.Rmd"} +``` + +```{r, include = FALSE} +# We generate the YAML file on the fly to render the gallery + +# list of sites +articles <- lapply(journals(), function(journal) { + name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name + img = file.path("resources", paste0(journal, "_article.gif")) + href = file.path("resources", paste0(journal, "_article.pdf")) + repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" + if (!file.exists(img) || !file.exists(href)) return(list()) + list( + title = sprintf("%s - %s", journal, name), + img = img, + href = href, + source = paste0(repo_url, journal), + showcase = TRUE + ) +}) + +articles <- Filter(length, articles) + +yaml::write_yaml(articles, "examples.yml") +``` + +The examples below illustrate all the article's template included into this package. + +```{r, echo=FALSE} +quillt::examples(yml = "examples.yml", ncol = 2) +``` From 11b30027ec3002c2e1b2c900f23832ff78c0652b Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 22:27:05 +0200 Subject: [PATCH 41/66] try a custom grid --- vignettes/articles/examples.Rmd | 48 ++++++++++--------- vignettes/articles/examples_linear.Rmd | 66 ++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 23 deletions(-) create mode 100644 vignettes/articles/examples_linear.Rmd diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index fe0a1d66a..bdfbd8414 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -4,11 +4,12 @@ resource_files: - resources --- +# List of templates + ```{r, setup, include = FALSE} library(rticles) ``` - ```{r, child = "_child_examples.Rmd"} ``` @@ -34,33 +35,34 @@ articles <- lapply(journals(), function(journal) { articles <- Filter(length, articles) ``` -The examples below illustrate all the article's template included into this package. +The examples below illustrate all the article's template included into this package. -```{r, include = FALSE} -src <- lapply(articles, function(article) { - glue::glue_data(article, paste( - "## {title}", - "", - "```yaml", - "output: {fun}", - "```", - "", - "[![]({img})]({href})", - "", - "[Source]({source})", - "\n", sep = "\n" - )) -}) -res <- knitr::knit_child(text = unlist(src), quiet = TRUE) +```{r} +library(htmltools) +thumbs <- function(ncol = 2, title, href, img, source, fun) { + div(class = sprintf("col-sm-%s", 12/ncol), + h2(title), + pre(class = c("sourceCode", "yaml"), + code(class = c("sourceCode", "yaml"), + sprintf("output: %s", fun))), + a(class = "thumbnail", + title = title, href = href, img(src = img)), + a(class = "source-repo", href = source, "Source of template") + ) +} ``` -`r res` +```{r} +quillt::thumbnails(lapply(articles, function(x) { + thumbs(title = x$title, img = x$img, + href = x$href, ncol = 2, source = x$source, + fun = x$fun) + }), ncol = 2) +``` ```{css} -img { - border: unset; - border-style: solid; - border-color: #FEDB00; +.dummy { + visibility: hidden; } ``` diff --git a/vignettes/articles/examples_linear.Rmd b/vignettes/articles/examples_linear.Rmd new file mode 100644 index 000000000..fe0a1d66a --- /dev/null +++ b/vignettes/articles/examples_linear.Rmd @@ -0,0 +1,66 @@ +--- +title: "Example of journal's templates" +resource_files: + - resources +--- + +```{r, setup, include = FALSE} +library(rticles) +``` + + +```{r, child = "_child_examples.Rmd"} +``` + +```{r, include = FALSE} +# We generate the YAML file on the fly to render the gallery + +# list of sites +articles <- lapply(journals(), function(journal) { + name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name + img = file.path("resources", paste0(journal, "_article.gif")) + href = file.path("resources", paste0(journal, "_article.pdf")) + repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" + if (!file.exists(img) || !file.exists(href)) return(list()) + list( + title = sprintf("%s - %s", journal, name), + fun = sprintf("%s_article", journal), + img = img, + href = href, + source = paste0(repo_url, journal) + ) +}) + +articles <- Filter(length, articles) +``` + +The examples below illustrate all the article's template included into this package. + +```{r, include = FALSE} +src <- lapply(articles, function(article) { + glue::glue_data(article, paste( + "## {title}", + "", + "```yaml", + "output: {fun}", + "```", + "", + "[![]({img})]({href})", + "", + "[Source]({source})", + "\n", sep = "\n" + )) +}) +res <- knitr::knit_child(text = unlist(src), quiet = TRUE) +``` + +`r res` + +```{css} +img { + border: unset; + border-style: solid; + border-color: #FEDB00; +} +``` + From ff0b58c22aee8115c73496e6f1f77738abbb9dad Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 22:39:53 +0200 Subject: [PATCH 42/66] for test in fork --- .github/workflows/pkgdown.yaml | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 332e220a7..bd0775f85 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -3,7 +3,7 @@ on: branches: - main - master - - pkgdown # rm this + - test-pkgdown # rm this pull_request: branches: - main @@ -65,22 +65,5 @@ jobs: key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }} - name: Build pkgdown site - run: pkgdown::build_site(new_process = FALSE) + run: pkgdown::deploy_to_branch()(new_process = FALSE) shell: Rscript {0} - - - name: Deploy to Netlify - id: netlify-deploy - uses: nwtgck/actions-netlify@v1.1 - with: - publish-dir: 'reference' - production-branch: pkgdown # change this back to master - github-token: ${{ secrets.GITHUB_TOKEN }} - deploy-message: - 'Deploy from GHA: ${{ github.event.head_commit.message }} (${{ github.sha }})' - enable-pull-request-comment: false - enable-commit-comment: false - enable-commit-status: true - alias: deploy-preview-${{ github.event.number }} - env: - NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} From 4a8bcd608fd98ac949bfb4a66fc1decf4fa58cac Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 22:43:20 +0200 Subject: [PATCH 43/66] do not include chunks --- vignettes/articles/examples.Rmd | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index bdfbd8414..3fe12b5ac 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -37,7 +37,7 @@ articles <- Filter(length, articles) The examples below illustrate all the article's template included into this package. -```{r} +```{r, include = FALSE} library(htmltools) thumbs <- function(ncol = 2, title, href, img, source, fun) { div(class = sprintf("col-sm-%s", 12/ncol), @@ -52,17 +52,10 @@ thumbs <- function(ncol = 2, title, href, img, source, fun) { } ``` -```{r} +```{r, include = FALSE} quillt::thumbnails(lapply(articles, function(x) { thumbs(title = x$title, img = x$img, href = x$href, ncol = 2, source = x$source, fun = x$fun) }), ncol = 2) ``` - -```{css} -.dummy { - visibility: hidden; -} -``` - From 5dd181e97c0f8f1c1b69a6687ae748d594aeeed1 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 22:52:49 +0200 Subject: [PATCH 44/66] debug mode --- vignettes/articles/examples.Rmd | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 3fe12b5ac..3b5db79a4 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -37,7 +37,7 @@ articles <- Filter(length, articles) The examples below illustrate all the article's template included into this package. -```{r, include = FALSE} +```{r, echo = FALSE} library(htmltools) thumbs <- function(ncol = 2, title, href, img, source, fun) { div(class = sprintf("col-sm-%s", 12/ncol), @@ -52,10 +52,15 @@ thumbs <- function(ncol = 2, title, href, img, source, fun) { } ``` -```{r, include = FALSE} +```{r, eval = FALSE} quillt::thumbnails(lapply(articles, function(x) { thumbs(title = x$title, img = x$img, href = x$href, ncol = 2, source = x$source, fun = x$fun) }), ncol = 2) ``` + +```{r} +str(articles) +``` + From 23c6dd93fe6c76dc166b676044fdab368788aeb7 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 23:04:34 +0200 Subject: [PATCH 45/66] debug mode --- vignettes/articles/examples.Rmd | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index bdfbd8414..fd08e2753 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -52,7 +52,7 @@ thumbs <- function(ncol = 2, title, href, img, source, fun) { } ``` -```{r} +```{r, eval = FALSE} quillt::thumbnails(lapply(articles, function(x) { thumbs(title = x$title, img = x$img, href = x$href, ncol = 2, source = x$source, @@ -60,9 +60,11 @@ quillt::thumbnails(lapply(articles, function(x) { }), ncol = 2) ``` -```{css} -.dummy { - visibility: hidden; -} +```{r} +str(lapply(articles, function(x) { + thumbs(title = x$title, img = x$img, + href = x$href, ncol = 2, source = x$source, + fun = x$fun)})) ``` + From 1f5869a0b8c74dc51bc8021383477d7862f0e78b Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Mon, 26 Jul 2021 23:09:43 +0200 Subject: [PATCH 46/66] Switch main page to standard grid --- vignettes/articles/examples.Rmd | 40 +++------------- vignettes/articles/examples_grid2.Rmd | 68 +++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 34 deletions(-) create mode 100644 vignettes/articles/examples_grid2.Rmd diff --git a/vignettes/articles/examples.Rmd b/vignettes/articles/examples.Rmd index 3b5db79a4..75c4890be 100644 --- a/vignettes/articles/examples.Rmd +++ b/vignettes/articles/examples.Rmd @@ -4,12 +4,6 @@ resource_files: - resources --- -# List of templates - -```{r, setup, include = FALSE} -library(rticles) -``` - ```{r, child = "_child_examples.Rmd"} ``` @@ -25,42 +19,20 @@ articles <- lapply(journals(), function(journal) { if (!file.exists(img) || !file.exists(href)) return(list()) list( title = sprintf("%s - %s", journal, name), - fun = sprintf("%s_article", journal), img = img, href = href, - source = paste0(repo_url, journal) + source = paste0(repo_url, journal), + showcase = TRUE ) }) articles <- Filter(length, articles) -``` -The examples below illustrate all the article's template included into this package. - -```{r, echo = FALSE} -library(htmltools) -thumbs <- function(ncol = 2, title, href, img, source, fun) { - div(class = sprintf("col-sm-%s", 12/ncol), - h2(title), - pre(class = c("sourceCode", "yaml"), - code(class = c("sourceCode", "yaml"), - sprintf("output: %s", fun))), - a(class = "thumbnail", - title = title, href = href, img(src = img)), - a(class = "source-repo", href = source, "Source of template") - ) -} +yaml::write_yaml(articles, "examples.yml") ``` -```{r, eval = FALSE} -quillt::thumbnails(lapply(articles, function(x) { - thumbs(title = x$title, img = x$img, - href = x$href, ncol = 2, source = x$source, - fun = x$fun) - }), ncol = 2) -``` +The examples below illustrate all the article's template included into this package. -```{r} -str(articles) +```{r, echo=FALSE} +quillt::examples(yml = "examples.yml", ncol = 2) ``` - diff --git a/vignettes/articles/examples_grid2.Rmd b/vignettes/articles/examples_grid2.Rmd new file mode 100644 index 000000000..f376ccafa --- /dev/null +++ b/vignettes/articles/examples_grid2.Rmd @@ -0,0 +1,68 @@ +--- +title: "Example of journal's templates" +resource_files: + - resources +--- + +# List of templates + +```{r, setup, include = FALSE} +library(rticles) +``` + +```{r, child = "_child_examples.Rmd"} +``` + +```{r, include = FALSE} +# We generate the YAML file on the fly to render the gallery + +# list of sites +articles <- lapply(journals(), function(journal) { + name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name + img = file.path("resources", paste0(journal, "_article.gif")) + href = file.path("resources", paste0(journal, "_article.pdf")) + repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" + if (!file.exists(img) || !file.exists(href)) return(list()) + list( + title = sprintf("%s - %s", journal, name), + fun = sprintf("%s_article", journal), + img = img, + href = href, + source = paste0(repo_url, journal) + ) +}) + +articles <- Filter(length, articles) +``` + +The examples below illustrate all the article's template included into this package. + +```{r, echo = FALSE} +library(htmltools) +thumbs <- function(ncol = 2, title, href, img, source, fun) { + div(class = sprintf("col-sm-%s", 12/ncol), + h2(title), + pre(class = c("sourceCode", "yaml"), + code(class = c("sourceCode", "yaml"), + sprintf("output: %s", fun))), + a(class = "thumbnail", + title = title, href = href, img(src = img)), + a(class = "source-repo", href = source, "Source of template") + ) +} +``` + +```{r, eval = FALSE} +quillt::thumbnails(lapply(articles, function(x) { + thumbs(title = x$title, img = x$img, + href = x$href, ncol = 2, source = x$source, + fun = x$fun) + }), ncol = 2) +``` + +Currently trying to debug + +```{r} +str(articles) +``` + From d328faa6d834c0c181df6207eaec920885cbb53a Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 09:48:39 +0200 Subject: [PATCH 47/66] Restore cache from previous run and save cache at every run --- .github/workflows/pkgdown.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index bd0775f85..a0ae5097e 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -62,7 +62,10 @@ jobs: vignettes/articles/resources/*.gif vignettes/articles/resources/*.pdf vignettes/articles/cache/*.rds - key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }} + key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-{{ github.sha }} + restore-keys: | + 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- + 1- - name: Build pkgdown site run: pkgdown::deploy_to_branch()(new_process = FALSE) From 6fd4d33c98f1926caeea2e49d86dc0b5a696a75f Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 09:49:23 +0200 Subject: [PATCH 48/66] Correct function --- .github/workflows/pkgdown.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index a0ae5097e..519e06e31 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -68,5 +68,5 @@ jobs: 1- - name: Build pkgdown site - run: pkgdown::deploy_to_branch()(new_process = FALSE) + run: pkgdown::deploy_to_branch(new_process = FALSE) shell: Rscript {0} From 20248a04155ff4cf8f4403db3026995d9e8c5a3d Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 10:50:28 +0200 Subject: [PATCH 49/66] reduce density of image --- vignettes/articles/_child_examples.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/articles/_child_examples.Rmd b/vignettes/articles/_child_examples.Rmd index 189caa52e..dbba37773 100644 --- a/vignettes/articles/_child_examples.Rmd +++ b/vignettes/articles/_child_examples.Rmd @@ -48,7 +48,7 @@ for (journal in journals) { } message("Converting to GIF...") - pdf_content <- image_read_pdf(out_pdf) + pdf_content <- image_read_pdf(out_pdf, density = 100) out_gif <- image_write_gif( image = pdf_content, path = xfun::with_ext(out_pdf, "gif"), From 71317fab86e21f778764f24bf7a2f42010f88625 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 10:57:25 +0200 Subject: [PATCH 50/66] missing $ to evaluate and invalidate cache --- .github/workflows/pkgdown.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 519e06e31..6b944263c 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -62,10 +62,10 @@ jobs: vignettes/articles/resources/*.gif vignettes/articles/resources/*.pdf vignettes/articles/cache/*.rds - key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-{{ github.sha }} + key: 2-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-${{ github.sha }} restore-keys: | - 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- - 1- + 2-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- + 2- - name: Build pkgdown site run: pkgdown::deploy_to_branch(new_process = FALSE) From e5422caff800c324ba83cda2308ce5744c648aca Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 12:19:28 +0200 Subject: [PATCH 51/66] Reduce image size and use two columns layout --- vignettes/articles/_child_examples.Rmd | 2 +- vignettes/articles/examples_linear.Rmd | 32 +++++++++++++++++++------- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/vignettes/articles/_child_examples.Rmd b/vignettes/articles/_child_examples.Rmd index dbba37773..1fbdb85d5 100644 --- a/vignettes/articles/_child_examples.Rmd +++ b/vignettes/articles/_child_examples.Rmd @@ -48,7 +48,7 @@ for (journal in journals) { } message("Converting to GIF...") - pdf_content <- image_read_pdf(out_pdf, density = 100) + pdf_content <- image_read_pdf(out_pdf, density = 72) %>% image_resize(geometry = "400x") out_gif <- image_write_gif( image = pdf_content, path = xfun::with_ext(out_pdf, "gif"), diff --git a/vignettes/articles/examples_linear.Rmd b/vignettes/articles/examples_linear.Rmd index fe0a1d66a..4a2a9a595 100644 --- a/vignettes/articles/examples_linear.Rmd +++ b/vignettes/articles/examples_linear.Rmd @@ -39,28 +39,44 @@ The examples below illustrate all the article's template included into this pack ```{r, include = FALSE} src <- lapply(articles, function(article) { glue::glue_data(article, paste( - "## {title}", + "## {{title}}", + "::: {.two-columns}", + "[![]({{img}})]({{href}})", "", - "```yaml", - "output: {fun}", - "```", + "* Format function: `{{paste0(fun, '()')}}`", "", - "[![]({img})]({href})", + "* [Template Sources]({{source}})", "", - "[Source]({source})", + "* [PDF example]({{href}})", + "", + "* YAML header:", + " ```yaml", + " output: {{fun}}", + " ```", + "", + ":::", "\n", sep = "\n" - )) + ), .open = "{{", .close = "}}") }) res <- knitr::knit_child(text = unlist(src), quiet = TRUE) ``` `r res` -```{css} +```{css, echo = FALSE} img { border: unset; border-style: solid; border-color: #FEDB00; } + +.two-columns { + -webkit-columns: 2; + -moz-columns: 2; + columns: 2; + -webkit-column-gap: 2em; + -moz-column-gap: 2em; + column-gap: 2em; +} ``` From 016940f0d5a6ca27c62d5db67cfc6ef8e85d61c0 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 12:20:06 +0200 Subject: [PATCH 52/66] invalidate cache --- .github/workflows/pkgdown.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 6b944263c..8491f19e5 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -62,10 +62,10 @@ jobs: vignettes/articles/resources/*.gif vignettes/articles/resources/*.pdf vignettes/articles/cache/*.rds - key: 2-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-${{ github.sha }} + key: 3-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-${{ github.sha }} restore-keys: | - 2-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- - 2- + 3-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- + 3- - name: Build pkgdown site run: pkgdown::deploy_to_branch(new_process = FALSE) From dbbe3203f5f909be2cf7b8ed77ded3245e43f3ff Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 12:43:21 +0200 Subject: [PATCH 53/66] better layout for mobile --- vignettes/articles/examples_linear.Rmd | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vignettes/articles/examples_linear.Rmd b/vignettes/articles/examples_linear.Rmd index 4a2a9a595..171f8880c 100644 --- a/vignettes/articles/examples_linear.Rmd +++ b/vignettes/articles/examples_linear.Rmd @@ -40,6 +40,11 @@ The examples below illustrate all the article's template included into this pack src <- lapply(articles, function(article) { glue::glue_data(article, paste( "## {{title}}", + "", + "```yaml", + "output: {{fun}}", + "```", + "", "::: {.two-columns}", "[![]({{img}})]({{href}})", "", @@ -49,11 +54,6 @@ src <- lapply(articles, function(article) { "", "* [PDF example]({{href}})", "", - "* YAML header:", - " ```yaml", - " output: {{fun}}", - " ```", - "", ":::", "\n", sep = "\n" ), .open = "{{", .close = "}}") @@ -71,9 +71,9 @@ img { } .two-columns { - -webkit-columns: 2; - -moz-columns: 2; - columns: 2; + -webkit-columns: 2 300px; + -moz-columns: 2 300px; + columns: 2 300px; -webkit-column-gap: 2em; -moz-column-gap: 2em; column-gap: 2em; From 5860047fcf0da2892dbeb53866c7a5f959a49422 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 12:58:59 +0200 Subject: [PATCH 54/66] invalidate the cache differently --- .github/workflows/pkgdown.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index a13a57f7f..247edc761 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -62,10 +62,10 @@ jobs: vignettes/articles/resources/*.gif vignettes/articles/resources/*.pdf vignettes/articles/cache/*.rds - key: 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-${{ github.sha }} + key: ${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-1-${{ github.sha }} restore-keys: | - 1-${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}- - 1- + ${{ hashFiles('vignettes/articles/_child_examples.Rmd') }}-1- + - name: Build pkgdown site run: pkgdown::build_site(new_process = FALSE) From 7cad4e7ee1cb1bd9127c8dcbab309764c39c1868 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 15:39:44 +0200 Subject: [PATCH 55/66] Reduce list of author in footer. Only maintainer and founder. This require special quiltt update rstudio/quillt#39 --- .github/workflows/pkgdown.yaml | 2 +- DESCRIPTION | 2 +- _pkgdown.yml | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 247edc761..07706b9d3 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -49,7 +49,7 @@ jobs: run: | pak::local_install_dev_deps(upgrade = TRUE, dependencies = c("all", "Config/Needs/website")) pak::pkg_install("r-lib/pkgdown") - pak::pkg_install("rstudio/quillt") + pak::pkg_install("rstudio/quillt@support-authors-config") shell: Rscript {0} - name: Install package diff --git a/DESCRIPTION b/DESCRIPTION index 7c5c04294..ab25c1a17 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -8,7 +8,7 @@ Authors@R: c( person(family = "R Foundation", role = c("aut", "cph")), person("Hadley", "Wickham", role = "aut", email = "hadley@rstudio.com"), person(family = "Journal of Statistical Software", role = c("aut", "cph")), - person(family = "RStudio", role = "cph"), + person(family = "RStudio", role = c("cph", "fnd")), person("Ramnath ", "Vaidyanathan", role = c("aut", "cph"), email = "ramnath.vaidya@gmail.com"), person(family = "Association for Computing Machinery", role = c("aut", "cph")), person("Carl", "Boettiger", role = c("aut", "cph"), email = "cboettig@gmail.com"), diff --git a/_pkgdown.yml b/_pkgdown.yml index 7c7170b69..1cf72bece 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -54,6 +54,10 @@ navbar: # - text: Version 0.2 # href: +authors: + footer: + roles: [cre, fnd] + # structure example reference: - title: List all available journal templates From e07ff35ac5bdb84ced4132b9fa42035d15adf9b7 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 16:03:54 +0200 Subject: [PATCH 56/66] trigger build From 83b06d5732beba1b655cf55f93573f3493d0e6d4 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 16:24:14 +0200 Subject: [PATCH 57/66] Filter the sidebar list --- DESCRIPTION | 4 ++-- _pkgdown.yml | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ab25c1a17..bd0d36201 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -5,10 +5,11 @@ Version: 0.20.3 Authors@R: c( person("JJ", "Allaire", role = "aut", email = "jj@rstudio.com"), person("Yihui", "Xie", role = c("aut", "cre"), email = "xie@yihui.name", comment = c(ORCID = "0000-0003-0645-5666")), + person("Christophe", "Dervieux", role = c("aut"), email = "cderv@rstudio.com", comment = c(ORCID = "0000-0003-4474-2498")), + person(family = "RStudio", role = c("cph", "fnd")), person(family = "R Foundation", role = c("aut", "cph")), person("Hadley", "Wickham", role = "aut", email = "hadley@rstudio.com"), person(family = "Journal of Statistical Software", role = c("aut", "cph")), - person(family = "RStudio", role = c("cph", "fnd")), person("Ramnath ", "Vaidyanathan", role = c("aut", "cph"), email = "ramnath.vaidya@gmail.com"), person(family = "Association for Computing Machinery", role = c("aut", "cph")), person("Carl", "Boettiger", role = c("aut", "cph"), email = "cboettig@gmail.com"), @@ -44,7 +45,6 @@ Authors@R: c( person("Shixiang", "Wang", role = c("aut", "ctb"), email = "w_shixiang@163.com", comment = c(ORCID = "0000-0001-9855-7357")), person('Jay', 'Hesselberth', role = c('aut', 'ctb'), email = 'jay.hesselberth@gmail.com', comment = c(ORCID = '0000-0002-6299-179X')), person("Alfredo", "Hernández", role = c("ctb"), email = "aldomann.designs@gmail.com", comment = c(ORCID = "0000-0002-2660-4545")), - person("Christophe", "Dervieux", role = c("aut"), email = "cderv@rstudio.com", comment = c(ORCID = "0000-0003-4474-2498")), person("Stefano", "Coretta", role = c("ctb"), email = "stefano.coretta@gmail.com", comment = c(ORCID = "0000-0001-9627-5532", github = "stefanocoretta")), person("Alvaro", "Uzaheta", role = c("ctb"), email = "alvaro.uzaheta@gess.ethz.ch", comment = c(github = "auzaheta")) ) diff --git a/_pkgdown.yml b/_pkgdown.yml index 1cf72bece..64d379062 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -57,6 +57,8 @@ navbar: authors: footer: roles: [cre, fnd] + sidebar: + roles: [cre, aut] # structure example reference: From 0e4216fa155d016bc8b1d306e10a096bc1454940 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 16:36:45 +0200 Subject: [PATCH 58/66] Add new logo --- README.Rmd | 2 +- README.md | 2 +- man/figures/logo.png | Bin 0 -> 40284 bytes pkgdown/favicon/apple-touch-icon-120x120.png | Bin 0 -> 12592 bytes pkgdown/favicon/apple-touch-icon-152x152.png | Bin 0 -> 17510 bytes pkgdown/favicon/apple-touch-icon-180x180.png | Bin 0 -> 22275 bytes pkgdown/favicon/apple-touch-icon-60x60.png | Bin 0 -> 4812 bytes pkgdown/favicon/apple-touch-icon-76x76.png | Bin 0 -> 6475 bytes pkgdown/favicon/apple-touch-icon.png | Bin 0 -> 22275 bytes pkgdown/favicon/favicon-16x16.png | Bin 0 -> 1227 bytes pkgdown/favicon/favicon-32x32.png | Bin 0 -> 2309 bytes pkgdown/favicon/favicon.ico | Bin 0 -> 15086 bytes 12 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 man/figures/logo.png create mode 100644 pkgdown/favicon/apple-touch-icon-120x120.png create mode 100644 pkgdown/favicon/apple-touch-icon-152x152.png create mode 100644 pkgdown/favicon/apple-touch-icon-180x180.png create mode 100644 pkgdown/favicon/apple-touch-icon-60x60.png create mode 100644 pkgdown/favicon/apple-touch-icon-76x76.png create mode 100644 pkgdown/favicon/apple-touch-icon.png create mode 100644 pkgdown/favicon/favicon-16x16.png create mode 100644 pkgdown/favicon/favicon-32x32.png create mode 100644 pkgdown/favicon/favicon.ico diff --git a/README.Rmd b/README.Rmd index dba202920..7829cce1d 100644 --- a/README.Rmd +++ b/README.Rmd @@ -10,7 +10,7 @@ output: github_document -# rticles +# rticles The **rticles** package provides a suite of custom [R Markdown](https://rmarkdown.rstudio.com) LaTeX formats and templates for various formats. Most of the templates are provided and maintained by the community, and anyone can contribute a new template. See [How to contribute](#how-to-contribute) below. diff --git a/README.md b/README.md index 686089684..7476e1e77 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ status](https://www.r-pkg.org/badges/version/rticles)](https://CRAN.R-project.or -# rticles +# rticles The **rticles** package provides a suite of custom [R Markdown](https://rmarkdown.rstudio.com) LaTeX formats and templates for diff --git a/man/figures/logo.png b/man/figures/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bc9db3e72921fbdcc0dbd267692466289bb8e0 GIT binary patch literal 40284 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�jzH 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 XBRtf9+(i+%2=Ae$p++<8NzDHN*{~;n literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-120x120.png b/pkgdown/favicon/apple-touch-icon-120x120.png new file mode 100644 index 0000000000000000000000000000000000000000..ef06b90adbf309a7cab5bd09da7db6d7305076f2 GIT binary patch literal 12592 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 RPK9;>BO|FGQ7di~{68|va#sKV literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-152x152.png b/pkgdown/favicon/apple-touch-icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..c40f33fb874b77df219b7b34382d77003cf95b1e GIT binary patch literal 17510 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 IIVCg!0AUWYBLDyZ literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-180x180.png b/pkgdown/favicon/apple-touch-icon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3c91dbfefd7accdb590192850ad1b8508a5791 GIT binary patch literal 22275 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 R_ZB>YOh*$ipWu%o{tISN!pHys literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/apple-touch-icon-60x60.png b/pkgdown/favicon/apple-touch-icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..a9bc2e279e6bac2f698602b18aea48f59b21f407 GIT binary patch literal 4812 zcmV;-5;N_IP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-16x16.png b/pkgdown/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ba964a610b07bff30b8543e182cba217ee3fbb5a GIT binary patch literal 1227 zcmZ`%drXs86u-7W5r#sFL7B`3GRG!pK?nh184QHVLxc|9=7UlSf+DYvAPBJ(5W!Mf zXrVw`TA*}1TA=jteP2PDFqu#tqcCa2ZQ5!&t=(7?)}~0$@!gga?Ytu zOo(=JaCZOzI8kCElQ49CckS`m>+QQg83UWl@c3{5h8rArXto$9(PNV00Vq8R0J92! zZOp{908m5*U^5kf5Fr3=c_Q>&C;&Kz#5igc=CD|HXz8Y_C7WQyh}HUAhRt>i80@|T zx5vE=1v}wjM4Dm{Qg#EuW~Oa`)%rUPZ!UFvQA~W94Ic2$^vj9{q|i7w`cE2obT4#J za$T%!mJBovi?gTdf}d9VXj^HrUUs8a$Hv$waxHICo(vs?QYlfH))5A zW1Y`t^h4u%E(!|}?TE5uktFE&o9rDJ*yf+#ied7VJ7YHK&>8W5O+B5YXCQL82p znW|U7(Wp5Fv>ruEIwaZm>auEUZ*UvxI$DeBYl}tg1p)yiY^faRZ$R|fYrJM21rjn&_zjciQEgU;bXoQ9Jw83|?b%?Ond0DU*ROFbBK33iw@}U34mSVLli+ z7!aV<&?|N<@M{~7OJU`9_=(BxRf~l`ula**^zowG5lt^eOQVZBtcRV;7VndVcEo$a z#yRy?-E`k(o5eep`xzCA%ehqkIX&6uA_+z0TIHCR`zOvOvw7i#>G`u?_8t(D^XFDS zPFBQs_!a(SBbC{ujBFUiLAQTqy>WE&y_}X~Or>ATd;q;tuN_NKwOM|(tQyCktSoP? z-!F~du-Sk1MDFEJrMa)aEH8WO>G>9qv$c`!9&m8jx7W$h&2D&4;gy6FyhJ7kYr%(5 z)CDM=1~EeD1q=*;KiS{UmmK8lA4K&F2ss%L5*U1pOb#KFuio9*_?I9jH$5w(Nv02lKNqGgi8ClmEB&Z~hLCVU5=m6Xlt!%w#pP%CGJ$-h@NLfn)crVA} zbVs5WF}BGSPb5V$118e(UL#b}%;Nm_lg7!zlY|*&jP%TLu<7OkZAAnMuoQq2l@O_l HNM-#4uZcCa literal 0 HcmV?d00001 diff --git a/pkgdown/favicon/favicon-32x32.png b/pkgdown/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d1dc54a1be0cb56c838826016dcc02ab0da868f8 GIT binary patch literal 2309 zcmV+g3HtVlP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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 literal 0 HcmV?d00001 From c890673f09922021365a2ba8f1aebf29fef7ebbd Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 16:42:55 +0200 Subject: [PATCH 59/66] reset example to linear with no column --- vignettes/articles/examples_linear.Rmd | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/vignettes/articles/examples_linear.Rmd b/vignettes/articles/examples_linear.Rmd index 171f8880c..5b263d16a 100644 --- a/vignettes/articles/examples_linear.Rmd +++ b/vignettes/articles/examples_linear.Rmd @@ -39,24 +39,17 @@ The examples below illustrate all the article's template included into this pack ```{r, include = FALSE} src <- lapply(articles, function(article) { glue::glue_data(article, paste( - "## {{title}}", + "## {title}", "", "```yaml", - "output: {{fun}}", + "output: {fun}", "```", "", - "::: {.two-columns}", - "[![]({{img}})]({{href}})", + "[![]({img})]({href})", "", - "* Format function: `{{paste0(fun, '()')}}`", - "", - "* [Template Sources]({{source}})", - "", - "* [PDF example]({{href}})", - "", - ":::", + "[Source]({source})", "\n", sep = "\n" - ), .open = "{{", .close = "}}") + )) }) res <- knitr::knit_child(text = unlist(src), quiet = TRUE) ``` @@ -69,14 +62,5 @@ img { border-style: solid; border-color: #FEDB00; } - -.two-columns { - -webkit-columns: 2 300px; - -moz-columns: 2 300px; - columns: 2 300px; - -webkit-column-gap: 2em; - -moz-column-gap: 2em; - column-gap: 2em; -} ``` From ac713c5ea972e623051af7aad53b334d4c6d3a73 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 18:44:06 +0200 Subject: [PATCH 60/66] update github action --- .github/workflows/pkgdown.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index 07706b9d3..ddb68a4b4 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -3,7 +3,6 @@ on: branches: - main - master - - pkgdown # rm this pull_request: branches: - main @@ -13,7 +12,7 @@ name: pkgdown jobs: pkgdown: - if: ${{ github.event_name == 'push' || startsWith(github.head_ref, 'pkgdown/') }} + if: ${{ github.event_name == 'push' || startsWith(github.head_ref, 'pkgdown') }} runs-on: macos-latest env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -76,7 +75,7 @@ jobs: uses: nwtgck/actions-netlify@v1.1 with: publish-dir: 'reference' - production-branch: pkgdown # change this back to master + production-branch: master github-token: ${{ secrets.GITHUB_TOKEN }} deploy-message: 'Deploy from GHA: ${{ github.event.head_commit.message }} (${{ github.sha }})' From 08a100e5cfd74d4ebffb6b3c11c450428078aedd Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 18:59:02 +0200 Subject: [PATCH 61/66] Remove test articles --- vignettes/articles/examples_grid.Rmd | 38 -------------- vignettes/articles/examples_grid2.Rmd | 68 -------------------------- vignettes/articles/examples_linear.Rmd | 66 ------------------------- 3 files changed, 172 deletions(-) delete mode 100644 vignettes/articles/examples_grid.Rmd delete mode 100644 vignettes/articles/examples_grid2.Rmd delete mode 100644 vignettes/articles/examples_linear.Rmd diff --git a/vignettes/articles/examples_grid.Rmd b/vignettes/articles/examples_grid.Rmd deleted file mode 100644 index 75c4890be..000000000 --- a/vignettes/articles/examples_grid.Rmd +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Example of journal's templates" -resource_files: - - resources ---- - -```{r, child = "_child_examples.Rmd"} -``` - -```{r, include = FALSE} -# We generate the YAML file on the fly to render the gallery - -# list of sites -articles <- lapply(journals(), function(journal) { - name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name - img = file.path("resources", paste0(journal, "_article.gif")) - href = file.path("resources", paste0(journal, "_article.pdf")) - repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" - if (!file.exists(img) || !file.exists(href)) return(list()) - list( - title = sprintf("%s - %s", journal, name), - img = img, - href = href, - source = paste0(repo_url, journal), - showcase = TRUE - ) -}) - -articles <- Filter(length, articles) - -yaml::write_yaml(articles, "examples.yml") -``` - -The examples below illustrate all the article's template included into this package. - -```{r, echo=FALSE} -quillt::examples(yml = "examples.yml", ncol = 2) -``` diff --git a/vignettes/articles/examples_grid2.Rmd b/vignettes/articles/examples_grid2.Rmd deleted file mode 100644 index f376ccafa..000000000 --- a/vignettes/articles/examples_grid2.Rmd +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: "Example of journal's templates" -resource_files: - - resources ---- - -# List of templates - -```{r, setup, include = FALSE} -library(rticles) -``` - -```{r, child = "_child_examples.Rmd"} -``` - -```{r, include = FALSE} -# We generate the YAML file on the fly to render the gallery - -# list of sites -articles <- lapply(journals(), function(journal) { - name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name - img = file.path("resources", paste0(journal, "_article.gif")) - href = file.path("resources", paste0(journal, "_article.pdf")) - repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" - if (!file.exists(img) || !file.exists(href)) return(list()) - list( - title = sprintf("%s - %s", journal, name), - fun = sprintf("%s_article", journal), - img = img, - href = href, - source = paste0(repo_url, journal) - ) -}) - -articles <- Filter(length, articles) -``` - -The examples below illustrate all the article's template included into this package. - -```{r, echo = FALSE} -library(htmltools) -thumbs <- function(ncol = 2, title, href, img, source, fun) { - div(class = sprintf("col-sm-%s", 12/ncol), - h2(title), - pre(class = c("sourceCode", "yaml"), - code(class = c("sourceCode", "yaml"), - sprintf("output: %s", fun))), - a(class = "thumbnail", - title = title, href = href, img(src = img)), - a(class = "source-repo", href = source, "Source of template") - ) -} -``` - -```{r, eval = FALSE} -quillt::thumbnails(lapply(articles, function(x) { - thumbs(title = x$title, img = x$img, - href = x$href, ncol = 2, source = x$source, - fun = x$fun) - }), ncol = 2) -``` - -Currently trying to debug - -```{r} -str(articles) -``` - diff --git a/vignettes/articles/examples_linear.Rmd b/vignettes/articles/examples_linear.Rmd deleted file mode 100644 index 5b263d16a..000000000 --- a/vignettes/articles/examples_linear.Rmd +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Example of journal's templates" -resource_files: - - resources ---- - -```{r, setup, include = FALSE} -library(rticles) -``` - - -```{r, child = "_child_examples.Rmd"} -``` - -```{r, include = FALSE} -# We generate the YAML file on the fly to render the gallery - -# list of sites -articles <- lapply(journals(), function(journal) { - name <- yaml::read_yaml(rticles:::pkg_file_template(journal, "template.yaml"))$name - img = file.path("resources", paste0(journal, "_article.gif")) - href = file.path("resources", paste0(journal, "_article.pdf")) - repo_url = "https://github.com/rstudio/rticles/tree/master/inst/rmarkdown/templates/" - if (!file.exists(img) || !file.exists(href)) return(list()) - list( - title = sprintf("%s - %s", journal, name), - fun = sprintf("%s_article", journal), - img = img, - href = href, - source = paste0(repo_url, journal) - ) -}) - -articles <- Filter(length, articles) -``` - -The examples below illustrate all the article's template included into this package. - -```{r, include = FALSE} -src <- lapply(articles, function(article) { - glue::glue_data(article, paste( - "## {title}", - "", - "```yaml", - "output: {fun}", - "```", - "", - "[![]({img})]({href})", - "", - "[Source]({source})", - "\n", sep = "\n" - )) -}) -res <- knitr::knit_child(text = unlist(src), quiet = TRUE) -``` - -`r res` - -```{css, echo = FALSE} -img { - border: unset; - border-style: solid; - border-color: #FEDB00; -} -``` - From 43d47ea51458faffd53958f79ef7497fdd8de830 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 19:00:21 +0200 Subject: [PATCH 62/66] Don't add a learn more link --- _pkgdown.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index 64d379062..e7c39dc34 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -19,10 +19,6 @@ development: home: strip_header: false - links: - - text: Learn more - # if relevant, set url to another website i.e https://rmarkdown.rstudio.com - href: "" # structure of website themed with quillt navbar: From 5316deb9156ae498ebda3f9c5c08db7f75d40744 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 19:02:25 +0200 Subject: [PATCH 63/66] typo in function name --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 3efba1be7..e80385023 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ rticles 0.21 --------------------------------------------------------------------- -- Add the fenced div with id `#refs` in `frontier_article()` skeleton to place the reference section in the correct expected place (thanks, @graysonwhite, #423). +- Add the fenced div with id `#refs` in `frontiers_article()` skeleton to place the reference section in the correct expected place (thanks, @graysonwhite, #423). - `bioinformatics_article()` has no more trailing comma after last author (thanks, @stephenturner, #413). - `bioinformatics_article()` now separates `manuscript_type` (e.g., Applications note, Original article) and `subject_section` (e.g. Genome analysis, Phylogenetics) in template and skeleton (thanks, @stephenturner, #415) From 3b23864fabc411b223ab07447b9b983943a8528f Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 19:11:55 +0200 Subject: [PATCH 64/66] Reformat NEWS.md to work better with pkgdown --- NEWS.md | 65 +++++++++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 44 deletions(-) diff --git a/NEWS.md b/NEWS.md index e80385023..6e92272bb 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,12 +1,10 @@ -rticles 0.21 ---------------------------------------------------------------------- +# rticles 0.21 - Add the fenced div with id `#refs` in `frontiers_article()` skeleton to place the reference section in the correct expected place (thanks, @graysonwhite, #423). - `bioinformatics_article()` has no more trailing comma after last author (thanks, @stephenturner, #413). - `bioinformatics_article()` now separates `manuscript_type` (e.g., Applications note, Original article) and `subject_section` (e.g. Genome analysis, Phylogenetics) in template and skeleton (thanks, @stephenturner, #415) -rticles 0.20 ---------------------------------------------------------------------- +# rticles 0.20 - `lipics_article()` skeleton now sets option `bookdown.theorem.preamble` to FALSE to work with `bookdown::pdf_book()` and avoid conflicst in theorem environment definition. This requires **bookdown** 0.23 or higher (#392). @@ -26,8 +24,7 @@ rticles 0.20 - fix an issue with `rjournal_article()` template to insert newline in author's block only if a field exist (thanks, @huizezhang-sherry, #387) -rticles 0.19 ---------------------------------------------------------------------- +# rticles 0.19 - Update Copernicus Publications template to version 6.2 from 2021-01-15 (thanks, @RLumSK, #366). @@ -35,8 +32,7 @@ rticles 0.19 - Add article template `ims_article()` for *Institute of Mathematical Statistics* Journals, e.g., *Annals of Applied Statistics* (thanks, @auzaheta, #372) -rticles 0.18 ---------------------------------------------------------------------- +# rticles 0.18 - `springer_article()` now uses the yaml variable biblio-style to set bibliography style instead of bibstyle. (@eliocamp, #358) @@ -56,8 +52,7 @@ fix for the LaTeX problem sanitized with the last `rticles` update (thanks, @RLu - Add article template `jasa_article()` for the *Journal of the Acoustical Society of America* (JASA) (thanks, @stefanocoretta, #364) -rticles 0.17 ---------------------------------------------------------------------- +# rticles 0.17 - Fixes `arxiv_article()` template when adding graphics from code chunks (thanks, @Athanasiamo, #332). @@ -69,15 +64,13 @@ rticles 0.17 - Add article template `lipics_article()` for *Leibniz International Proceedings in Informatics* (LIPIcs) (thanks, @nuest, #288). -rticles 0.16 ---------------------------------------------------------------------- +# rticles 0.16 - Fixed `ctex_article()` to correctly use the default Pandoc template as intended in the PR #307, which introduced the bug #322 (thanks, @baketbek @cderv #323). - The minimal version of **knitr** required is 1.30 now. -rticles 0.15 ---------------------------------------------------------------------- +# rticles 0.15 - Added a new `journals()` function to list all available journal names in this package (#318). @@ -111,8 +104,7 @@ rticles 0.15 - Added the output format `rticles::ctex_article` as an alias to `rticles::ctex`, to be consistent with the names of other `*_article` formats. -rticles 0.14 ---------------------------------------------------------------------- +# rticles 0.14 - Added custom author ordering for the IEEE template (thanks, @DunLug, #263). @@ -124,8 +116,7 @@ rticles 0.14 - Added Oxford University Press (OUP) template (thanks, @dmkaplan2000, #271). -rticles 0.13 ---------------------------------------------------------------------- +# rticles 0.13 - Added the `cslreferences` environment to all templates (thanks, @bbauzile, #260). @@ -135,25 +126,21 @@ rticles 0.13 - Add support for bibliography styles on the Springer template (thanks, @swhaat, #262). -rticles 0.12 ---------------------------------------------------------------------- +# rticles 0.12 - Updated the `pnas_article()` document class from the PNAS website https://www.pnas.org/page/authors/latex (#21). -rticles 0.11 ---------------------------------------------------------------------- +# rticles 0.11 - Added the Journal of Open Source Software (and Education) template (@noamross, #229). - Tweaked the `tf_article` template to avoid using absolute full paths for figures in the "Figures" section (@jooyoungseo, #246). -rticles 0.10 ---------------------------------------------------------------------- +# rticles 0.10 - Support syntax highlighting in the `peerj_article()` format (@zkamvar, #238). -rticles 0.9 ---------------------------------------------------------------------- +# rticles 0.9 - Added support for Keywords in IEEE Trans template (@espinielli, #227). @@ -163,8 +150,7 @@ rticles 0.9 - Use csl file for citations in output format `elsevier_article()` (@nuest, #233). -rticles 0.8 ---------------------------------------------------------------------- +# rticles 0.8 - Added the Taylor & Francis journal template (@dleutnant, #218). @@ -174,8 +160,7 @@ rticles 0.8 - Updated the template for MDPI to 02/2019 (@dleutnant, #203). -rticles 0.7 ---------------------------------------------------------------------- +# rticles 0.7 - Added the template for the Frontiers Journals (@muschellij2, @zkamvar, #209). @@ -193,8 +178,7 @@ rticles 0.7 - The function `ctex_template()` was removed. If you need to use a custom LaTeX template for the `ctex` output format, just use the `template` option under `ctex`. -rticles 0.6 ---------------------------------------------------------------------- +# rticles 0.6 - Added the template for the SAGE Journals (thanks, @oguzhanogreden, #181). @@ -206,8 +190,7 @@ rticles 0.6 - Disabled syntax highlighting for `rjournal_article()` (thanks, @eddelbuettel, #185). -rticles 0.5 ---------------------------------------------------------------------- +# rticles 0.5 - Added the template for the IEEE Transaction Journals (thanks, @Emaasit, #97). @@ -231,20 +214,16 @@ rticles 0.5 - Supports breaking the JSS author list into multiple lines; see #100 for details. -rticles 0.4.1 ---------------------------------------------------------------------- +# rticles 0.4.1 - Add Royal Society Open Science journal template -rticles 0.2.0.9000 ---------------------------------------------------------------------- +# rticles 0.2.0.9000 - Add Institute of Electrical and Electronics Engineers (IEEE) IEEEtrans template for Conferences - -rticles 0.2 ---------------------------------------------------------------------- +# rticles 0.2 - Add American Chemical Society (ACS) template @@ -258,8 +237,6 @@ rticles 0.2 - Fix preamble variable name in R Journal template - -rticles 0.1 ---------------------------------------------------------------------- +# rticles 0.1 - Initial release to CRAN From 574e8ad4a3679cd2decde21083c420da96c048ce Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 19:14:04 +0200 Subject: [PATCH 65/66] Remove 0.2.9000 --- NEWS.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/NEWS.md b/NEWS.md index 6e92272bb..053d2e967 100644 --- a/NEWS.md +++ b/NEWS.md @@ -218,8 +218,6 @@ fix for the LaTeX problem sanitized with the last `rticles` update (thanks, @RLu - Add Royal Society Open Science journal template -# rticles 0.2.0.9000 - - Add Institute of Electrical and Electronics Engineers (IEEE) IEEEtrans template for Conferences From 4a17fb4ff097ead03dc9218992d7b85a6e6755b5 Mon Sep 17 00:00:00 2001 From: christophe dervieux Date: Tue, 27 Jul 2021 19:17:00 +0200 Subject: [PATCH 66/66] Use quillt dev version main branch --- .github/workflows/pkgdown.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml index ddb68a4b4..06aae5192 100644 --- a/.github/workflows/pkgdown.yaml +++ b/.github/workflows/pkgdown.yaml @@ -48,7 +48,7 @@ jobs: run: | pak::local_install_dev_deps(upgrade = TRUE, dependencies = c("all", "Config/Needs/website")) pak::pkg_install("r-lib/pkgdown") - pak::pkg_install("rstudio/quillt@support-authors-config") + pak::pkg_install("rstudio/quillt") shell: Rscript {0} - name: Install package