# Retypeset is a reading-first Astro blog theme with real LaTeX and Mermaid

> astro-theme-retypeset is a static blog theme built on Astro and UnoCSS, with i18n across six language demos, MDX, LaTeX, Mermaid, an RSS feed, OpenGraph images and a scripted in-place update path. It reads like a book rather than a landing page, and it is a template you fork rather than a package you install.

**radishzzz/astro-theme-retypeset** — Revive the beauty of typography.

- Repository: https://github.com/radishzzz/astro-theme-retypeset
- Website: https://retypeset.radishzz.cc/en/
- Stars: 708 · Forks: 196
- Language: TypeScript
- License: MIT
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/radishzzz-astro-theme-retypeset

## A blog theme that treats the page as a page

Retypeset is a static blog theme for Astro, and the design brief is legible in the project's own tagline about reviving the beauty of typography. The README says it was inspired by the Typography theme and reimagines the layout of all pages to create a reading experience reminiscent of paper books. That is a specific visual stance rather than a marketing adjective: text is the interface, the measure of the line is deliberate, and the page furniture stays out of the way. The demo instances are published in six language variants, English, Spanish, Russian, Simplified Chinese, Traditional Chinese and Japanese, which tells you two things at once. It tells you the layout has been checked with real scripts in each writing system, since Chinese and Japanese typography breaks assumptions that hold for Latin text. It also tells you the i18n work is finished rather than aspirational, because the feature list names i18n support and the repository ships separate README files in Simplified and Traditional Chinese, Japanese, Spanish, French and Russian. For a reader whose content is not in English, the language setup is the part that saves the most work.

## UnoCSS carries the styling layer, not a component library

The stack is Astro with UnoCSS, and the dependency list shows how the styling is organised. There is no Tailwind and no framework component package, but there is a full set of UnoCSS packages, the Astro integration, the ESLint plugin, the attributify preset and the reset, with the utility engine and the reset pinned to the same 66.6.8 version. The UnoCSS configuration lives in a top level uno.config.ts, and the eslint.config.mjs file applies the antfu config together with the UnoCSS ESLint plugin, so utility class names are linted as part of the same pass as the rest of the code. The consequence for an adopter is that the theme's look is defined in a configuration file you can extend, rather than in a set of imported components. That suits a theme whose identity is spacing, measure and type scale, since those are the things a utility configuration expresses well. It also means the visual language is more diffuse than a component library's, so a large redesign means touching the configuration and the styles rather than swapping a handful of components.

## LaTeX and Mermaid arrive through the remark and rehype chain

The feature list advertises support for SEO, Sitemap, OpenGraph, RSS, MDX, LaTeX, Mermaid and a table of contents, and the dependency list shows exactly how each of those is wired in. Markdown is handled by markdown-it with remark plugins for directives and math, and rehype plugins for Katex, Mermaid and slugs, so LaTeX is rendered through katex and rehype-katex and diagrams through mermaid and rehype-mermaid. MDX comes from the official @astrojs/mdx integration, and the sitemap from @astrojs/sitemap. The OpenGraph images are generated rather than uploaded, with astro-og-canvas and sharp in the dependency list, and canvaskit-wasm is present for the rendering that needs it. Two other dependencies are worth noticing because they shape what you get. Partytown moves third-party scripts off the main thread, and lite-youtube-embed replaces the YouTube iframe with a lighter embed. The theme also computes reading time with reading-time and pulls plain text out of the markdown AST with mdast-util-to-string, which is what feeds the metadata. In short, the feature list is not aspirational, each item maps to a package in the tree.

## Two comment systems ship in the same box

Retypeset includes a comment system, and the dependency list contains two different client libraries for it, @waline/client and twikoo. Both are self-hostable comment backends that live outside the static build, which is the point: a static site has no server to store comments, so the theme has to talk to something else. Having both present means the choice of backend is a configuration decision rather than a rewrite, and it also means one of them is presumably the default. The static build itself has no database, which is a genuine architectural boundary of the whole theme. Everything else, the posts, the tags, the archives, the RSS feed and the sitemap, is generated at build time from the content directory, and the only runtime dependency the finished site carries is whatever third-party script you enable, which is where partytown and the comment clients fit. If you need comments on a static host, plan for the backend before you need them, since a comment system with no server behind it renders as an empty box.

## Forking the template and running it locally

There is no install command, because a theme for a static site generator is a repository you copy. The getting started steps are a fork or a template-based new repository, then a terminal session.

```bash
   # Clone the repository
   git clone <repository-url>

   # Navigate to the project directory
   cd <repository-name>

   # Install pnpm globally (if not already installed)
   npm install -g pnpm

   # Install dependencies
   pnpm install

   # Start the development server
   pnpm dev
```

The project expects pnpm, and the package manifest pins the package manager at pnpm@10.33.0. The dev script is not a bare dev server either, it runs astro check before astro dev, so type and content errors surface in the terminal as you work rather than in a broken preview. The build script follows the same discipline with astro check and astro build, and then applies the image optimisation step, apply-lqip, which runs the script in scripts/apply-lqip.ts. Other helper scripts sit alongside it, new-post for creating a post, format-posts for reformatting existing content, and update-theme for the upgrade path described below. Deployment is not the theme's job, the README points at the Astro deployment guides for Netlify, Vercel or anything else that can host a static build.

## pnpm update-theme and the patches directory

Updating a forked theme is the part that most template projects leave vague, and Retypeset has an answer. The package manifest defines an update-theme script that runs scripts/update-theme.ts, and the README says you run pnpm update-theme to pull in new features, with a link to a video showing how to resolve merge conflicts manually when they occur. The presence of a patches directory at the repository root, together with pnpm-lock.yaml, indicates that the theme is carried forward with patch files rather than by re-copying files, so your own edits and the theme's changes are kept apart as far as the tooling allows. The script is written in TypeScript and run through tsx, the same runner used for the other helper scripts, so a fork owner can read and adjust the tooling rather than treating it as a black box. The honest caveat is the one the README itself points at: conflicts are possible, and the documented resolution is a video rather than a written procedure. A team with several people editing a fork should decide who owns the merge before the first theme update lands.

## A single release tag and a last push in April

The maintenance picture is the main reason to think twice. The repository is not archived and the last push was on 2026-04-12. The release history has a single entry, v1.0.0 from 2025-08-07, and the package manifest still carries version 1.0.0 as the theme's version. So the code is being worked on while the version number has not moved, which is normal for a template whose releases are tied to the underlying Astro upgrade rather than to feature drops, but it also means there is no changelog of themes to consult and no compatibility matrix. Dependency ranges carry the real risk here, and they are wide. Astro is declared at ^6.1.5, UnoCSS packages are pinned to an exact 66.6.8, and the rest use caret ranges, so a fresh pnpm install at a later date can pull different versions than the ones the author tested. The licence is MIT, with a LICENSE file at the root, which is permissive for a template you fork, and the README credits the themes that influenced the work, Typography, Fuwari, Redefine, AstroPaper, heti and EarlySummerSerif. If you want a maintained component library with a release train and a compatibility statement, this is not it. If you want a carefully typeset static blog you own outright, it is a reasonable base, and the fact that the whole thing is a fork you control is a feature for a site that will not change hands.

## Conclusion

Adopt Retypeset if you want a static blog with a book-like reading layout, working LaTeX and Mermaid, and a translation setup that already exists, and you are prepared to fork the template and edit TypeScript configuration rather than install a package. Skip it if you need a maintained component library with a release train, because the only published version is v1.0.0 from 2025-08-07 and the last push was on 2026-04-12. Before you commit, run pnpm dev and check the typography on your own content, then read the Theme Guide, and plan for the merge conflicts that pnpm update-theme can produce when you have edited the theme source.

## FAQ

### How do I set up the astro-theme-retypeset blog locally?

Fork the repository or create a new one from the template, install pnpm with npm install -g pnpm, then run pnpm install and pnpm dev. The dev script runs astro check before astro dev, and the project pins pnpm@10.33.0 as its package manager.

### Does astro-theme-retypeset support LaTeX and Mermaid diagrams?

Yes. The theme lists LaTeX and Mermaid support, and the dependencies include katex with remark-math and rehype-katex, plus mermaid with rehype-mermaid, along with rehype-slug for heading anchors and a table of contents.

### How do I update a forked Retypeset theme?

Run pnpm update-theme, which executes scripts/update-theme.ts, and the repository keeps a patches directory for carrying changes forward. The README notes that merge conflicts can occur and links a video showing how to resolve them manually.

### Which languages does the Retypeset theme support?

The theme provides demo sites in English, Spanish, Russian, Simplified Chinese, Traditional Chinese and Japanese, and the feature list includes i18n support. The repository also ships README files in several of those languages.

## Sources

- [License: MIT](https://github.com/radishzzz/astro-theme-retypeset/blob/master/LICENSE)
- [Project website](https://retypeset.radishzz.cc/en/)
- [radishzzz/astro-theme-retypeset on GitHub](https://github.com/radishzzz/astro-theme-retypeset)
- [README](https://github.com/radishzzz/astro-theme-retypeset/blob/master/README.md)
- [Releases](https://github.com/radishzzz/astro-theme-retypeset/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/radishzzz-astro-theme-retypeset
