The "ar5iv theme" for arXiv HTML documents converted via LaTeXML.
jsDelivr serves the built bundle directly from the git release tag via its GitHub endpoint — no npm publish, CDN sign-up, or configuration needed.
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/dginev/ar5iv-css@0.9.0/css/ar5iv-fonts.css">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/dginev/ar5iv-css@0.9.0/dist/ar5iv.min.css">Pin the version (@0.9.0) for reproducibility. Use @0.9 for the
latest patch within a minor, or @latest for the newest tag — at the
cost of cache poisoning on version bumps.
The
/gh/endpoint is served straight from the tagged commit, so it works the moment the tag is pushed. Publishing to npm is optional; if done, the/npm/mirror (cdn.jsdelivr.net/npm/ar5iv-css@…), unpkg, andnpm install ar5iv-cssbecome available too.
Link the unminified source directly. Pulls in tokens, accessibility,
dark-mode behaviour, and print styles automatically via @import.
<link rel="stylesheet" href="css/ar5iv-fonts.css">
<link rel="stylesheet" href="css/ar5iv.css">npm install
npm run buildProduces dist/ar5iv.min.css. The build inlines all local
@imports into a single file via
lightningcss and minifies. (Fonts are
served separately from the unminified css/ar5iv-fonts.css — it is
mostly @import + @font-face, so minifying it saves nothing.)
The theme honours <html data-theme="light|dark|sepia">, OS
prefers-color-scheme, and prefers-contrast: more. Author-supplied
inline colours (LaTeXML's --ltx-*-color custom properties) are
inverted under dark mode via an override-friendly --fn-* indirection
— see docs/rfc_latexml_custom_properties.md for the contract and an
override example. For recipes on overriding tokens, changing the
inversion strategy, or shipping a downstream theme, see
docs/THEMING.md.
The theme targets modern evergreen browsers — roughly mid-2024
onward (Chrome/Edge 123+, Firefox 120+, Safari 17.5+). The gating
feature is light-dark(); the theme also uses relative-colour
syntax, :has(), subgrid, and cascade layers. On older engines the
document still renders and stays readable, but theme colours fall
back to the browser's default light/dark canvas (accents, link
colours, and highlights are lost). See
docs/BASELINE_AUDIT.md for the
feature-by-feature baseline.
- Design tokens reference
- Theming cookbook — four worked recipes
(override one colour, change the dark-mode inversion, add a
third
data-theme, ship a downstream npm package). - Contributor guide
- CSS custom properties for LaTeX-authored colours
Release tags are unprefixed (0.9.0, not v0.9.0) to match the
tag history, the release.yml trigger, and .npmrc
(tag-version-prefix=""). A v-prefixed tag will silently not
trigger the release workflow.
When package.json is already at the target version (as for the
initial 0.9.0), tag it directly:
npm run lint # stylelint + TOKENS.md drift (the preversion gate)
npm run build # refresh dist/
git add -A && git commit -m "release: 0.9.0"
git tag 0.9.0 # UNPREFIXED
git push origin HEAD --follow-tags # tag push -> /gh/ CDN goes live via release.yml
# npm publish # OPTIONAL: also enables /npm/ + unpkg + npm installFor subsequent releases, prefer npm version <patch|minor|major>:
its version lifecycle rebuilds and stages dist/, and postversion
pushes the commit and tag.
Pushing the tag runs release.yml, which re-verifies the committed
dist/ against a fresh build and warms jsDelivr's /gh/ cache — so
the CDN URLs above go live directly from the tag, no npm publish
required.
Publishing to npm is optional and additive: npm publish (which the
prepublishOnly script builds for) also enables the /npm/ jsDelivr
mirror, unpkg, and npm install ar5iv-css. The published artefact
contains both the unminified source (css/) and the minified bundle
(dist/).