Add a Typst compiler alongside Quarto and LaTeX
Build and Deploy Verso / deploy (push) Successful in 7m37s
Build and Deploy Verso / deploy (push) Successful in 7m37s
A project whose root file is a .typ file now compiles straight to PDF with Typst, as a third engine beside Quarto (.qmd) and latexmk (.tex). Dispatch stays purely extension-based. CLSI: - New TypstRunner.js: runs `quarto typst compile <main>.typ output.pdf` (reuses the Typst bundled in Quarto, so no extra binary / Docker change). stderr is merged into output.log. - CompileManager: _isTypstFile + a TypstRunner branch in _getRunner, and TypstRunner added to the isRunning check and stopCompile kill list. - RequestParser: 'typst' added to VALID_COMPILERS. web: - settings.defaults: 'typ' added to validRootDocExtensions and the text extensions (so .typ opens in the editor); 'typst' added to safeCompilers. - output-files: the Quarto/Typst log parser (which already understands Typst `error:`/`warning:` + `┌─ file:line:col` diagnostics) now also handles .typ compiles, so their errors/warnings populate the log tabs. Polish: - New-project menu: "Blank Typst project" + "Example Typst project" in both the main and welcome dropdowns, backed by createBasicProject/createExampleProject flavour 'typst', a new mainbasic.typ template and an example-project-typst presentation (math, an image, a table, lists). - Compiler dropdown gains a "Typst" option (cosmetic; dispatch is by extension). README updated: three compilers side by side, with a Writing-a-Typst-document section. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2,14 +2,14 @@
|
||||
|
||||
**A collaborative real-time editor for Quarto and LaTeX presentations and documents.**
|
||||
|
||||
Verso is a fork of [Overleaf](https://github.com/overleaf/overleaf) that adds first-class [Quarto](https://quarto.org) support alongside Overleaf's existing LaTeX toolchain. It keeps Overleaf's real-time collaboration infrastructure and runs **two compilers side by side**: `.qmd` files are built with Quarto (PDF via Typst, or HTML via RevealJS), while `.tex` files still compile with `latexmk`/TeX Live. The engine is selected automatically from the root file's extension, so Quarto and LaTeX projects coexist.
|
||||
Verso is a fork of [Overleaf](https://github.com/overleaf/overleaf) that adds first-class [Quarto](https://quarto.org) support alongside Overleaf's existing LaTeX toolchain. It keeps Overleaf's real-time collaboration infrastructure and runs **three compilers side by side**, chosen automatically from the root file's extension: `.qmd` builds with Quarto (PDF via Typst, or HTML via RevealJS), `.tex` with `latexmk`/TeX Live, and `.typ` straight through [Typst](https://typst.app). All three coexist on one server.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- **Real-time collaboration** — multiple users editing the same `.qmd` file simultaneously, powered by Overleaf's operational-transformation engine
|
||||
- **Dual compiler** — `.qmd` files build with Quarto; `.tex` files build with `latexmk`/TeX Live. The runner is chosen by the root file's extension, so LaTeX and Quarto projects live side by side
|
||||
- **Three compilers** — `.qmd` builds with Quarto, `.tex` with `latexmk`/TeX Live, and `.typ` with Typst. The runner is chosen by the root file's extension, so Quarto, LaTeX and Typst projects live side by side
|
||||
- **Two output formats** — set `format: typst` in the YAML frontmatter for a PDF preview, or `format: revealjs` for an interactive HTML presentation rendered in an iframe
|
||||
- **Document outline** — headings (`#`, `##`, `###`) are extracted and shown in the sidebar outline panel
|
||||
- **Math, code, tables** — standard Quarto/Pandoc Markdown features all work
|
||||
@@ -70,7 +70,7 @@ browser ──→ nginx:80
|
||||
└── /project/*/output/* → clsi-nginx:8080 (compiled output files)
|
||||
|
||||
web → document-updater → Redis pub/sub → real-time → browser
|
||||
web → CLSI (quarto render / latexmk) → output files → nginx → browser
|
||||
web → CLSI (quarto render / latexmk / typst) → output files → nginx → browser
|
||||
```
|
||||
|
||||
Key services:
|
||||
@@ -80,7 +80,7 @@ Key services:
|
||||
| `web` | HTTP API, React frontend, auth, project management |
|
||||
| `real-time` | WebSocket layer, live cursor and edit sync |
|
||||
| `document-updater` | Operational transformation, Redis pub/sub |
|
||||
| `clsi` | Compiler — runs `quarto render` (`.qmd`) or `latexmk` (`.tex`) and serves output |
|
||||
| `clsi` | Compiler — runs `quarto render` (`.qmd`), `latexmk` (`.tex`) or `typst` (`.typ`) and serves output |
|
||||
| `docstore` | Document text storage (MongoDB) |
|
||||
| `filestore` | Binary file storage (S3 or local) |
|
||||
| `project-history` | Change history and version tracking |
|
||||
@@ -123,6 +123,14 @@ point; **Blank LaTeX project** gives you an empty `main.tex`.
|
||||
> extra packages may not build out of the box yet — see `server-ce/Dockerfile-base`
|
||||
> for how to switch to a fuller TeX Live scheme.
|
||||
|
||||
## Writing a Typst document
|
||||
|
||||
A project whose root file is a `.typ` file compiles directly to PDF with
|
||||
[Typst](https://typst.app) — fast, modern markup with a real scripting
|
||||
language. No extra install is needed: Verso drives the Typst that ships inside
|
||||
Quarto (`quarto typst compile`). Use the **Blank Typst project** or **Example
|
||||
Typst project** entries in the *New project* menu to get started.
|
||||
|
||||
## Environment variables
|
||||
|
||||
Verso inherits all of Overleaf's environment variables (prefixed `OVERLEAF_`).
|
||||
|
||||
Reference in New Issue
Block a user