Symptom
R-CMD-check is failing across nearly the entire matrix (16/18 jobs) on a fresh
install of TinyTeX. The failure is the same on every OS and pandoc combination
that exercises the oup_v1 test:
Rendering the oup_v1 format...
[1/1] install: oup-authoring-template [27k]
...
! Undefined control sequence.
l.241 \authormark
{Alice Anonymous et al.}
Error: LaTeX failed to compile oup_v1_article.tex.
The two jobs that pass (ubuntu-latest (release) [Pandoc 2.5] and [Pandoc 2.7.3]) only pass because test_format("oup_v1", skip = !rmarkdown::pandoc_available("2.10")) in tests/testit/test-formats.R:70
skips OUP v1 on those older pandoc versions.
Example failing run: https://github.com/rstudio/rticles/actions/runs/25806163370
Cause
Independent of any rticles change. The upstream
oup-authoring-template class
on CTAN has been updated and no longer defines \authormark. TinyTeX
auto-installs the latest version from CTAN at test time, so every CI run
freshly downloads the broken-for-our-use version.
Our template still emits \authormark{...} from
inst/rmarkdown/templates/oup_v1/resources/template.tex:384-388.
R-CMD-check on main was green as recently as #599 (Update to JSS 3.6), so
the regression entered via an upstream CTAN release, not via an rticles
commit. PR #601 (Copernicus 7.14) is the first PR to hit it; its Copernicus
changes are unrelated and the Copernicus rendering itself passes in every
job before oup_v1 fails.
Suggested fixes
Three options, roughly in increasing effort:
- Pin the class file: vendor
oup-authoring-template.cls (and any
companions) into inst/rmarkdown/templates/oup_v1/skeleton/ at the last
working version so it shadows CTAN — same pattern we already use for
copernicus.cls, agujournal2018.cls, etc.
- Patch the template: replace
\authormark with whatever the new
upstream class expects (need to read the new .dtx to know). If only the
command name changed, this is a one-line fix in
inst/rmarkdown/templates/oup_v1/resources/template.tex:384-388.
- Defensive macro: wrap with
\providecommand{\authormark}[1]{} or
\@ifundefined{authormark}{\let\authormark\@gobble}{} so missing macros
degrade silently. Cheapest, but loses the running-head behavior.
Tracking #409 is also relevant — it already notes the OUP template needs an
update; this is now blocking CI.
Workaround for incoming PRs
Until this lands, contributors can ignore the red R-CMD-check if the only
failing test is test-formats.R -> oup_v1. The rest of the test suite is
unaffected.
Symptom
R-CMD-check is failing across nearly the entire matrix (16/18 jobs) on a fresh
install of TinyTeX. The failure is the same on every OS and pandoc combination
that exercises the
oup_v1test:The two jobs that pass (
ubuntu-latest (release) [Pandoc 2.5]and[Pandoc 2.7.3]) only pass becausetest_format("oup_v1", skip = !rmarkdown::pandoc_available("2.10"))intests/testit/test-formats.R:70skips OUP v1 on those older pandoc versions.
Example failing run: https://github.com/rstudio/rticles/actions/runs/25806163370
Cause
Independent of any rticles change. The upstream
oup-authoring-templateclasson CTAN has been updated and no longer defines
\authormark. TinyTeXauto-installs the latest version from CTAN at test time, so every CI run
freshly downloads the broken-for-our-use version.
Our template still emits
\authormark{...}frominst/rmarkdown/templates/oup_v1/resources/template.tex:384-388.R-CMD-check on
mainwas green as recently as #599 (Update to JSS 3.6), sothe regression entered via an upstream CTAN release, not via an rticles
commit. PR #601 (Copernicus 7.14) is the first PR to hit it; its Copernicus
changes are unrelated and the Copernicus rendering itself passes in every
job before
oup_v1fails.Suggested fixes
Three options, roughly in increasing effort:
oup-authoring-template.cls(and anycompanions) into
inst/rmarkdown/templates/oup_v1/skeleton/at the lastworking version so it shadows CTAN — same pattern we already use for
copernicus.cls,agujournal2018.cls, etc.\authormarkwith whatever the newupstream class expects (need to read the new
.dtxto know). If only thecommand name changed, this is a one-line fix in
inst/rmarkdown/templates/oup_v1/resources/template.tex:384-388.\providecommand{\authormark}[1]{}or\@ifundefined{authormark}{\let\authormark\@gobble}{}so missing macrosdegrade silently. Cheapest, but loses the running-head behavior.
Tracking #409 is also relevant — it already notes the OUP template needs an
update; this is now blocking CI.
Workaround for incoming PRs
Until this lands, contributors can ignore the red
R-CMD-checkif the onlyfailing test is
test-formats.R->oup_v1. The rest of the test suite isunaffected.