The latest production build of the manual is published from main to
GitHub Pages on every push:
| Format | URL |
|---|---|
| HTML site | https://docs.snap.berkeley.edu/ |
| Full manual (PDF) | https://docs.snap.berkeley.edu/snap-manual.pdf |
| Manual without block reference (PDF) | https://docs.snap.berkeley.edu/snap-manual-no-blocks-ref.pdf |
| Block reference only (PDF) | https://docs.snap.berkeley.edu/snap-blocks-ref.pdf |
| Original Snap! 8 PDF (legacy reference) | https://snap.berkeley.edu/snap/help/SnapManual.pdf |
For PRs, an unmerged-but-built copy of the PDFs is attached to each CI run as a GitHub Actions artifact (kept for 10 days). See "Previewing the PDFs for a PR" below.
The reference manual for the Snap! programming language. (GitHub)
Note
The web manual is a "translation" of the original PDF, which was last largely updated for Snap! 8. We're first working on making the web version readable, then we'll update the content to match recent Snap! releases.
To cite the manual specifically:
DOI: https://doi.org/10.5281/zenodo.16892852
Harvey, B., & Mönig, J. (2022). Snap! Reference Manual. Zenodo. https://doi.org/10.5281/zenodo.16892852
@book{harvey_2022_16892853,
author = {Harvey, Brian and
Mönig, Jens},
title = {Snap! Reference Manual},
publisher = {Zenodo},
year = 2022,
month = aug,
doi = {10.5281/zenodo.16892852},
url = {https://doi.org/10.5281/zenodo.16892852},
}To cite Snap! in general, please use the following citation:
DOI: https://doi.org/10.5281/zenodo.15460068
Mönig, J., & Harvey, B. (2025). Snap! (latest). Zenodo. https://doi.org/10.5281/zenodo.15460068
@software{monig_2025_15460069,
author = {Mönig, Jens and
Harvey, Brian},
title = {Snap!},
month = may,
year = 2025,
publisher = {Zenodo},
version = {latest},
doi = {10.5281/zenodo.15460068},
url = {https://doi.org/10.5281/zenodo.15460068},
}These DOI's always point to the latest version of the manual and Snap! software, respectively. You can visit Zenodo to cite a specific version if you need to.
Brian Harvey, Jens Mönig, Michael Ball, Jadge Hügle, Victoria Phelps, Mary Fries
This version of the Snap! manual is built using Jupyter Book 2 via MyST Markdown.
You need Node.js (v18+) to install MyST:
npm install -g mystmdmacOS (via Homebrew):
brew install node
npm install -g mystmdIt is also recommended to install the MyST VSCode extension.
While writing content (live preview):
npm run dev
# OR
jupyter-book startThis builds the web version and opens it in the browser. The page reloads automatically as you save changes.
To build the final HTML:
jupyter-book build --htmlOutput is placed in _build/html/.
To build the PDFs (requires a TeX Live install):
jupyter-book build --pdfThis produces three PDFs in output/:
snap-manual.pdf— the full manual.snap-manual-no-blocks-ref.pdf— the manual without the per-block reference section.snap-blocks-ref.pdf— only the per-block reference.
See docs/latex.md for details on the PDF pipeline and
the local LaTeX template at _latex-template/. The
two filtered variants are configured by articles: lists in myst.yml,
generated from toc.yml by
_support/scripts/generate-pdf-exports.py
— rerun that script after editing the toc.
Please read docs/STYLEGUIDE.md. Other developer
docs live in docs/.
Install the MyST VSCode extension for syntax highlighting and live preview.
If you are making large updates to the md structure, it may be worth working on the script to convert the Word document to markdown.
The script assumes you have pandoc installed and available in your path.
cd _support/conversion
ruby convert-word-doc.rb
The website is hosted on GitHub Pages at docs.snap.berkeley.edu.
On every push to main, the myst.yml
workflow builds the HTML site and three PDFs (snap-manual.pdf,
snap-manual-no-blocks-ref.pdf, snap-blocks-ref.pdf), then publishes
them together to the gh-pages branch. All three PDFs are therefore
available at the URLs in the table at the top of this README.
The same workflow also runs on pull requests. It does not publish to
gh-pages, but it does attach the freshly built PDFs to the workflow run
as a GitHub Actions artifact named snap-manual-pdfs with a 10-day
retention. The artifact contains all three PDFs.
To grab the PR's PDFs:
- Open the PR on GitHub and click Checks → Deploy MyST / Jupyter Book to GitHub Pages.
- On the run page, scroll to the Artifacts section at the bottom.
- Download
snap-manual-pdfs— it expands to a zip with all three PDFs.
Or from the CLI:
gh run download --name snap-manual-pdfs --repo snap-cloud/manualAGPL, CC-BY-NC-SA
