Update GHA
diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml
index 0fdc22d..5065b4c 100644
--- a/.github/workflows/R-CMD-check.yaml
+++ b/.github/workflows/R-CMD-check.yaml
@@ -1,4 +1,4 @@
-# Workflow derived from https://github.com/r-lib/actions/tree/master/examples
+# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
 # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
 #
 # NOTE: This workflow is overkill for most R packages and
@@ -30,63 +30,55 @@
       matrix:
         config:
           # testing R release with last shipped pandoc version in RStudio IDE and new pandoc
-          - {os: macOS-latest,   pandoc: '2.11.4', r: 'release'}
-          - {os: macOS-latest,   pandoc: '2.14.2', r: 'release'}
-
-          # TODO: issue on windows with pandoc 2.11.4 - change when fixed
-          - {os: windows-latest, pandoc: '2.7.3', r: 'release'}
-          # Use 3.6 to trigger usage of RTools35
-          - {os: windows-latest, pandoc: '2.7.3', r: '3.6'}
-
-          # Use older ubuntu to maximise backward compatibility
-          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'devel', http-user-agent: 'release'}
-          - {os: ubuntu-18.04,   pandoc: 'devel', r: 'release'}
-          - {os: ubuntu-18.04,   pandoc: '2.14.2', r: 'release'}
-          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'release'}
-          - {os: ubuntu-18.04,   pandoc: '2.11.4', r: 'oldrel-1'}
-
+          - {os: windows-latest, pandoc: '3.1.1',    r: 'release'}
+          - {os: macOS-latest,   pandoc: '3.1.1',    r: 'release'}
+          - {os: ubuntu-latest,  pandoc: 'devel',    r: 'release'}
+          # testing older pandoc versions
+          - {os: ubuntu-latest,  pandoc: '2.19.2',   r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.18',     r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.17.1.1', r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.16.2',   r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.14.2',   r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.11.4',   r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.7.3',    r: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.5',      r: 'release'}
+          # testing other R versions
+          - {os: ubuntu-latest,  pandoc: '2.11.4',   r: 'devel', http-user-agent: 'release'}
+          - {os: ubuntu-latest,  pandoc: '2.11.4',   r: 'oldrel-1'}
+          - {os: ubuntu-latest,  pandoc: '2.11.4',   r: 'oldrel-2'}
+          - {os: ubuntu-latest,  pandoc: '2.11.4',   r: 'oldrel-3'}
     env:
       GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
       R_KEEP_PKG_SOURCE: yes
 
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
-      - uses: r-lib/actions/setup-pandoc@v1
-        if: matrix.config.pandoc != 'devel'
-        with:
-          pandoc-version: ${{ matrix.config.pandoc }}
-      
-      - uses: cderv/actions/setup-pandoc-nightly@nightly-pandoc
-        if: matrix.config.pandoc == 'devel'
+      - uses: r-lib/actions/setup-pandoc@v2
 
-      - uses: r-lib/actions/setup-r@v1
+      - uses: r-lib/actions/setup-r@v2
         with:
           r-version: ${{ matrix.config.r }}
           http-user-agent: ${{ matrix.config.http-user-agent }}
           use-public-rspm: true
 
-      - uses: r-lib/actions/setup-r-dependencies@v1
+      - uses: r-lib/actions/setup-r-dependencies@v2
         with:
-          extra-packages: rcmdcheck
+          extra-packages: any::rcmdcheck
+          needs: check
 
-      - uses: r-lib/actions/check-r-package@master
+      - name: Remove default installed Pandoc
+        if: runner.os == 'Linux'
+        run: sudo dpkg -r pandoc
 
-      - name: Show testthat output
-        if: always()
-        run: find check -name 'testthat.Rout*' -exec cat '{}' \; || true
-        shell: bash
-
-      - name: Upload check results
-        if: failure()
-        uses: actions/upload-artifact@main
+      - uses: r-lib/actions/setup-pandoc@v2
+        if: matrix.config.pandoc != 'devel'
         with:
-          name: ${{ runner.os }}-r${{ matrix.config.r }}-results
-          path: check
-          
-      - name: Test coverage
-        if: success() && runner.os == 'Linux' && matrix.config.r == 'release' && matrix.config.pandoc == '2.11.4'
-        run: |
-          pak::pkg_install('covr')
-          covr::codecov()
-        shell: Rscript {0}
+          pandoc-version: ${{ matrix.config.pandoc }}
+
+      - uses: cderv/actions/setup-pandoc-nightly@nightly-pandoc
+        if: matrix.config.pandoc == 'devel'
+
+      - uses: r-lib/actions/check-r-package@v2
+        with:
+          upload-snapshots: true
diff --git a/.github/workflows/pr-commands.yaml b/.github/workflows/pr-commands.yaml
index 1cdafbf..71f335b 100644
--- a/.github/workflows/pr-commands.yaml
+++ b/.github/workflows/pr-commands.yaml
@@ -1,4 +1,4 @@
-# Workflow derived from https://github.com/r-lib/actions/tree/master/examples
+# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
 # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
 on:
   issue_comment:
@@ -8,28 +8,30 @@
 
 jobs:
   document:
-    if: startsWith(github.event.comment.body, '/document')
+    if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/document') }}
     name: document
     runs-on: ubuntu-latest
     env:
       GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
-      - uses: r-lib/actions/pr-fetch@v1
+      - uses: r-lib/actions/pr-fetch@v2
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
 
-      - uses: r-lib/actions/setup-r@v1
+      - uses: r-lib/actions/setup-r@v2
         with:
           use-public-rspm: true
 
-      - uses: r-lib/actions/setup-r-dependencies@v1
+      - uses: r-lib/actions/setup-r-dependencies@v2
         with:
-          extra-packages: roxygen2
+          extra-packages: any::roxygen2
+          needs: pr-document
 
       - name: Document
-        run: Rscript -e 'roxygen2::roxygenise()'
+        run: roxygen2::roxygenise()
+        shell: Rscript {0}
 
       - name: commit
         run: |
@@ -38,30 +40,32 @@
           git add man/\* NAMESPACE
           git commit -m 'Document'
 
-      - uses: r-lib/actions/pr-push@v1
+      - uses: r-lib/actions/pr-push@v2
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
 
   style:
-    if: startsWith(github.event.comment.body, '/style')
+    if: ${{ github.event.issue.pull_request && (github.event.comment.author_association == 'MEMBER' || github.event.comment.author_association == 'OWNER') && startsWith(github.event.comment.body, '/style') }}
     name: style
     runs-on: ubuntu-latest
     env:
       GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
     steps:
-      - uses: actions/checkout@v2
+      - uses: actions/checkout@v3
 
-      - uses: r-lib/actions/pr-fetch@v1
+      - uses: r-lib/actions/pr-fetch@v2
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
 
-      - uses: r-lib/actions/setup-r@v1
+      - uses: r-lib/actions/setup-r@v2
 
       - name: Install dependencies
-        run: Rscript -e 'install.packages("styler")'
+        run: install.packages("styler")
+        shell: Rscript {0}
 
       - name: Style
-        run: Rscript -e 'styler::style_pkg()'
+        run: styler::style_pkg()
+        shell: Rscript {0}
 
       - name: commit
         run: |
@@ -70,6 +74,6 @@
           git add \*.R
           git commit -m 'Style'
 
-      - uses: r-lib/actions/pr-push@v1
+      - uses: r-lib/actions/pr-push@v2
         with:
           repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/README.Rmd b/README.Rmd
index 528bfdd..6784308 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -4,11 +4,9 @@
 ---
 
 <!-- badges: start -->
-
 [![CRAN status](https://www.r-pkg.org/badges/version/revealjs)](https://CRAN.R-project.org/package=revealjs)
-[![R-CMD-check](https://github.com/rstudio/revealjs/workflows/R-CMD-check/badge.svg)](https://github.com/rstudio/revealjs/actions)
+[![R-CMD-check](https://github.com/rstudio/revealjs/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/rstudio/revealjs/actions/workflows/R-CMD-check.yaml)
 [![reveal.js](https://img.shields.io/badge/reveal.js-`r revealjs:::revealjs_version()`-yellow)](https://github.com/rstudio/revealjs/tree/main/inst/reveal.js-`r revealjs:::revealjs_version()`)
-
 <!-- badges: end -->
 
 ## Overview
diff --git a/README.md b/README.md
index 72170f5..f6aac97 100644
--- a/README.md
+++ b/README.md
@@ -5,9 +5,8 @@
 
 [![CRAN
 status](https://www.r-pkg.org/badges/version/revealjs)](https://CRAN.R-project.org/package=revealjs)
-[![R-CMD-check](https://github.com/rstudio/revealjs/workflows/R-CMD-check/badge.svg)](https://github.com/rstudio/revealjs/actions)
+[![R-CMD-check](https://github.com/rstudio/revealjs/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/rstudio/revealjs/actions/workflows/R-CMD-check.yaml)
 [![reveal.js](https://img.shields.io/badge/reveal.js-4.2.1-yellow)](https://github.com/rstudio/revealjs/tree/main/inst/reveal.js-4.2.1)
-
 <!-- badges: end -->
 
 ## Overview
@@ -106,18 +105,18 @@
 The following single character keyboard shortcuts enable alternate
 display modes:
 
--   `'f'` enable fullscreen mode
+- `'f'` enable fullscreen mode
 
--   `'o'` enable overview mode
+- `'o'` enable overview mode
 
--   `'b'` enable pause mode with a black screen hiding slide content
+- `'b'` enable pause mode with a black screen hiding slide content
 
--   `'?'` enable help mode to show keyboard shortcut cheatsheet
+- `'?'` enable help mode to show keyboard shortcut cheatsheet
 
--   `'s'` enable presentation mode with speaker notes when the Notes
-    plugin is activated
+- `'s'` enable presentation mode with speaker notes when the Notes
+  plugin is activated
 
--   `'m'` enable menu mode when the ‘menu’ plugin is activated
+- `'m'` enable menu mode when the ‘menu’ plugin is activated
 
 Pressing `Esc` exits all of these modes.
 
@@ -187,17 +186,17 @@
 There are several options that control the appearance of revealjs
 presentations:
 
--   `theme` specifies the theme to use for the presentation (available
-    themes are “simple”, “dark”, “black”, “sky”, “beige”, “serif”,
-    “solarized”, “blood”, “moon”, “night”, “league”, or “white”
+- `theme` specifies the theme to use for the presentation (available
+  themes are “simple”, “dark”, “black”, “sky”, “beige”, “serif”,
+  “solarized”, “blood”, “moon”, “night”, “league”, or “white”
 
--   `highlight` specifies the syntax highlighting style. Supported
-    styles include “default”, “tango”, “pygments”, “kate”, “monochrome”,
-    “espresso”, “zenburn”, “haddock”, or “breezedark”. Pass null to
-    prevent syntax highlighting.
+- `highlight` specifies the syntax highlighting style. Supported styles
+  include “default”, “tango”, “pygments”, “kate”, “monochrome”,
+  “espresso”, “zenburn”, “haddock”, or “breezedark”. Pass null to
+  prevent syntax highlighting.
 
--   `center` specifies whether you want to vertically center content on
-    slides (this defaults to false).
+- `center` specifies whether you want to vertically center content on
+  slides (this defaults to false).
 
 For example:
 
@@ -216,13 +215,13 @@
 You can use the `transition` and `background_transition` options to
 specify the global default slide transition style:
 
--   `transition` specifies the visual effect when moving between slides.
-    Available transitions are “convex”, “fade”, “slide”, “concave”,
-    “zoom”, or “none”.
+- `transition` specifies the visual effect when moving between slides.
+  Available transitions are “convex”, “fade”, “slide”, “concave”,
+  “zoom”, or “none”.
 
--   `background_transition` specifies the background transition effect
-    when moving between full page slides. Available transitions are
-    “convex”, “fade”, “slide”, “concave”, “zoom”, or “none”
+- `background_transition` specifies the background transition effect
+  when moving between full page slides. Available transitions are
+  “convex”, “fade”, “slide”, “concave”, “zoom”, or “none”
 
 For example:
 
@@ -338,15 +337,15 @@
 There are a number of options that affect the output of figures within
 reveal.js presentations:
 
--   `fig_width` and `fig_height` can be used to control the default
-    figure width and height (7x5 is used by default)
+- `fig_width` and `fig_height` can be used to control the default figure
+  width and height (7x5 is used by default)
 
--   `fig_retina` Specifies the scaling to perform for retina displays
-    (defaults to 2, which currently works for all widely used retina
-    displays). Note that this only takes effect if you are using
-    knitr >= 1.5.21. Set to `null` to prevent retina scaling.
+- `fig_retina` Specifies the scaling to perform for retina displays
+  (defaults to 2, which currently works for all widely used retina
+  displays). Note that this only takes effect if you are using knitr \>=
+  1.5.21. Set to `null` to prevent retina scaling.
 
--   `fig_caption` controls whether figures are rendered with captions
+- `fig_caption` controls whether figures are rendered with captions
 
 For example:
 
@@ -367,15 +366,15 @@
 reveal.js presentations for rendering LaTeX and MathML equations. You
 can use the `mathjax` option to control how MathJax is included:
 
--   Specify “default” to use an https URL from the official MathJax CDN.
+- Specify “default” to use an https URL from the official MathJax CDN.
 
--   Specify “local” to use a local version of MathJax (which is copied
-    into the output directory). Note that when using “local” you also
-    need to set the `self_contained` option to false.
+- Specify “local” to use a local version of MathJax (which is copied
+  into the output directory). Note that when using “local” you also need
+  to set the `self_contained` option to false.
 
--   Specify an alternate URL to load MathJax from another location.
+- Specify an alternate URL to load MathJax from another location.
 
--   Specify null to exclude MathJax entirely.
+- Specify null to exclude MathJax entirely.
 
 For example, to use a local copy of MathJax: