Quarto Integration

How Framework integrates with Quarto for notebooks and presentations

Overview

Framework thoughtfully integrates with Quarto, the open-source scientific publishing system. This integration provides automatic configuration, render directory management, sensible defaults for both notebooks and presentations, and a graphical user interface for managing these settings.

Render Directories

A key design principle in Framework is the separation of source files from rendered output. When you create a notebook or presentation, the .qmd source stays in its directory while rendered HTML/PDF output goes to a dedicated render directory.

Why separate source from output?

  • Keep your working directories clean
  • Rendered files are typically gitignored (they're regenerated)
  • Easy to find rendered output in a consistent location
  • Multiple formats can coexist without clutter

How It Works

When you enable notebooks in a project, Framework creates both directories:

Project Type Source Directory Render Directory
Standard Project notebooks/ outputs/notebooks/
Privacy Sensitive notebooks/ outputs/private/notebooks/
Course/Teaching slides/ rendered/slides/

Each source directory gets a _quarto.yml that tells Quarto where to put output:

project:
  output-dir: ../outputs/notebooks

format:
  html:
    theme: default
    embed-resources: true
    toc: true

Quarto Configuration

Framework generates _quarto.yml files with sensible defaults. These files are yours to customize. Framework only creates them once and won't overwrite your changes.

Using the GUI

Configure Quarto defaults through the GUI. Run setup() and navigate to SettingsQuarto:

framework::setup()

Quarto Settings GUI

The GUI lets you configure:

HTML Rendering (notebooks, documentation):

  • Theme selection
  • Embed resources (standalone HTML files)
  • Table of contents and depth
  • Code folding and tools
  • Syntax highlighting style

Presentations (revealjs):

  • Theme selection
  • Incremental bullets
  • Slide numbers
  • Transitions

Generated Files

Framework generates _quarto.yml in each source directory:

my-project/
├── _quarto.yml              # Root project config
├── notebooks/
│   ├── _quarto.yml          # Notebook-specific config
│   └── analysis.qmd
└── outputs/
    └── notebooks/           # Rendered output appears here

Customizing After Generation

Edit any _quarto.yml directly—Framework won't touch it after creation:

# notebooks/_quarto.yml
project:
  output-dir: ../outputs/notebooks

format:
  html:
    theme: cosmo              # Changed from default
    toc: true
    toc-depth: 4              # Deeper TOC
    code-fold: true           # Enable code folding
    code-tools: true          # Show code tools
    embed-resources: true
    highlight-style: github

Creating Quarto Files

Notebooks

Create new notebooks with make_notebook():

make_notebook("exploration")
make_notebook("modeling", subdir = "analysis")

This creates a .qmd file from your notebook template in the configured notebooks directory.

Presentations

For presentation projects or course slides:

make_presentation("quarterly-review")

Presentations use RevealJS format by default with appropriate settings for slides.

Rendering

From R

# Render a single file
quarto::quarto_render("notebooks/analysis.qmd")

# Render and save to outputs
save_notebook("notebooks/analysis.qmd")

From Terminal

# Render in place (uses _quarto.yml settings)
quarto render notebooks/analysis.qmd

# Render entire project
quarto render

Format-Specific Settings

HTML Documents

Default settings optimized for analysis notebooks:

format:
  html:
    theme: default
    embed-resources: true    # Standalone files
    toc: true                # Table of contents
    toc-depth: 3
    code-fold: false
    code-tools: false
    highlight-style: github

RevealJS Presentations

Default settings for slides:

format:
  revealjs:
    theme: default
    incremental: false       # All bullets at once
    slide-number: true
    transition: slide
    background-transition: fade
    controls: true
    progress: true
    center: true
    highlight-style: github

Regenerating Configurations

If you need to regenerate _quarto.yml files (for example, after changing global defaults), use the GUI's Regenerate Quarto Configs button.

Warning: This overwrites any manual customizations. Framework backs up existing files to .quarto_backups/ before regenerating.