Swap docs toolchain from MyST to Quarto#304
Merged
Conversation
Mechanical swap; no content changes to the 11 .md pages.
- Replace docs/myst.yml with docs/_quarto.yml (same navigation order,
sidebar grouped under collapsed sections).
- Convert the 8 {literalinclude} directives in docs/examples.md to
Quarto's {.python include="..."} syntax (the only MyST-specific
construct in the existing docs).
- Makefile: make docs -> quarto render docs; make docs-serve ->
quarto preview docs. Drop the mystmd version pin and wrapper.
- CI: install Quarto via quarto-dev/quarto-actions/setup@v2 instead of
fetching mystmd at job start.
- docs/.gitignore: track _site / _freeze / .quarto / .quarto_ipynb
instead of _build.
Local render time: 4 seconds for all 11 pages (cold Quarto, 4.6 GHz
M-series). CI first-run overhead from the Quarto binary install is
~30 s (action caches after); overall PR-docs job still under a minute.
Why Quarto:
- One source, two outputs (HTML site + PDF) - matters when the
methodology paper lands as a chapter of the same tree.
- Computational blocks execute live Python against the installed
package during build, so tutorials stay in sync with releases.
- Native journal templates, citations via .bib, cross-references.
- The main Jupyter Book / MyST maintainer moved to Quarto; JB2's
development pace has slowed.
This was referenced Apr 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 1 of 3 (A: toolchain swap → B: graph + generator → C: docs rewrite) per PR #301's review feedback.
Scope
Swap the docs toolchain from MyST to Quarto. No content changes — all 11 existing
.mdpages render under Quarto unchanged.Changes
docs/myst.yml→docs/_quarto.ymlwith the same navigation, grouped into collapsible sidebar sections.docs/examples.md— convert the 8{literalinclude}directives to Quarto's{.python include="..."}(the only MyST-specific construct in the current tree).Makefile—make docs→quarto render docs;make docs-serve→quarto preview docs..github/workflows/pr_docs_changes.yaml— install Quarto via the officialquarto-dev/quarto-actions/setup@v2action.docs/.gitignore— track_site/_freeze/.quarto/.quarto_ipynb.Timing
Local
quarto render docstakes 4 seconds for all 11 pages on an M-series laptop (cold Quarto, no cache). CI first-run overhead from the Quarto binary install is ~30 seconds before the action's cache kicks in; overall PR-docs job stays under a minute.Per earlier review feedback this is acceptable — within a factor of 2 of the MyST time, trading ~15 seconds of CI job time for the multi-output capability Quarto brings.
Why Quarto
Test plan
quarto render docssucceeds locally (11/11 pages){literalinclude}→{.python include=}conversions produce identical rendered outputFollow-up PRs
policyengine.graphas an optional extra (policyengine[graph]) plus the auto-reference generator underdocs/_generator/core-conceptsintohouseholds/reforms/microsim)