Introduction
Quarto is a next-generation scientific publishing system from Posit (formerly RStudio). It unifies the creation of articles, reports, presentations, dashboards, websites, and books into a single tool that combines narrative text with live code execution across multiple programming languages.
What Quarto Does
- Renders Markdown documents with embedded code in Python, R, Julia, or Observable JS
- Outputs to HTML, PDF, Word, EPUB, PowerPoint, and Reveal.js presentations
- Generates multi-page websites and books with navigation and cross-references
- Supports academic features like citations, footnotes, equations, and figure numbering
- Provides interactive features through Observable JS and Shiny integration
Architecture Overview
Quarto extends Pandoc with a preprocessing layer that executes code cells via Jupyter (Python/Julia) or knitr (R), captures outputs, and injects them into the Pandoc AST before final rendering. Custom Lua filters provide additional transformations. The CLI orchestrates the pipeline and manages project-level configuration.
Self-Hosting & Configuration
- Install the CLI from quarto.org or via package managers (Homebrew, Chocolatey)
- Requires a language runtime (Python/R/Julia) for code execution
- Project configuration via _quarto.yml at the project root
- Publish to GitHub Pages, Netlify, Quarto Pub, or any static host
- Integrates with VS Code, RStudio, and JupyterLab via official extensions
Key Features
- Single source documents that render to multiple output formats
- Cross-language code execution within the same document
- Built-in citation management via BibTeX and CSL
- Parameterized reports for generating variations from templates
- Live preview with hot-reload during authoring
Comparison with Similar Tools
- R Markdown — Predecessor focused on R; Quarto is its multi-language evolution
- Jupyter Book — Python-focused book publishing, less format flexibility
- Pandoc — The underlying engine but without code execution or project management
- LaTeX — Powerful typesetting but steep learning curve and no code execution
- MkDocs — Static site generator for documentation, not computational documents
FAQ
Q: Do I need R to use Quarto? A: No. Quarto works with Python, Julia, and Observable JS. R is optional.
Q: Can I convert existing Jupyter notebooks to Quarto? A: Yes. Quarto natively renders .ipynb files and can also convert them to .qmd format.
Q: Is Quarto suitable for non-scientific documentation? A: Yes. It works well for technical blogs, project documentation, and business reports that benefit from embedded code or data visualizations.
Q: How does Quarto handle version control? A: Quarto source files (.qmd) are plain text Markdown, making them ideal for Git-based workflows and code review.