Skip to main content

Quarto Deck

@vcjdeboer/quarto-deckv2026.10.23.2· 3d agoBEHAVIORSWORKFLOWSREPORTSSKILLSACCEPTED WARNINGS
01README

Make Quarto reveal.js lecture decks the same way every time, and keep a record of how each was built. Register paper PDFs and crop their figures with provenance (page, box, dpi, DOI); write slides in house patterns (one paper, one message; timing in the notes); port slides and animation layers from old PowerPoint decks; outline the source (time budget vs slot, CHECK markers, missing images); render with R/knitr executing; check every slide in headless Chrome (overflow, contact sheets); export a PDF or image-based PPTX hand-out. A build journal records decisions and requests. Bundles the quarto-deck-authoring skill.

02Behaviors1
@vcjdeboer/quarto-deck/deckv2026.10.23.2quarto_deck.ts

Global Arguments

ArgumentTypeDescription
dirstringAbsolute path of the deck project folder
mainstringMain .qmd file, relative to dir
slotMinutes?numberTalk slot in minutes, compared with the timing in the speaker notes
chrome?stringChrome/Chromium binary
quarto?stringQuarto binary
sourcesDir?stringWhere source PDFs are kept, relative to dir
assetsDir?stringWhere slide images go, relative to dir
fn outline()
Parse the deck source (following includes) without rendering: slides, hidden, notes coverage, timing vs slot, CHECK markers, missing images, DOIs
fn render(force?: boolean)
quarto render the deck (R/knitr executes). Skipped when no input changed since the last build unless force=true
ArgumentTypeDescription
force?booleanRender even when inputs are unchanged
fn check(sheets?: boolean, width?: number, height?: number)
Open the built deck in headless Chrome: every slide with all fragments shown, overflow beyond the slide box, contact sheets
ArgumentTypeDescription
sheets?booleanMake contact sheets
width?number
height?number
fn export_pdf(out?: string, shrink?: boolean, quality?: number, dpi?: number, maxPx?: number, store?: boolean)
Print the built deck to PDF with headless Chrome and (macOS) shrink it with a Quartz filter for distribution
ArgumentTypeDescription
out?stringOutput PDF path (default: next to the deck)
shrink?boolean
quality?number
dpi?number
maxPx?number
store?booleanAlso keep the PDF as swamp data
fn source_add(pdf: string, key: string, citation: string, doi?: string)
Register a paper PDF as a deck source: copy it into sourcesDir, record citation, DOI, checksum, pages and the figure/table caption index
ArgumentTypeDescription
pdfstringPath of the PDF
keystringShort key, e.g. sbarra1959
citationstringSource line as it should appear on the slide, e.g. 'Sbarra & Karnovsky, J Biol Chem 1959'
doi?string
fn source_find(key: string, query: string)
Search a registered source's text (e.g. 'Table 1', a phrase); lists page and line of each hit
ArgumentTypeDescription
keystring
querystring
fn source_page(key: string, page: number, dpi?: number, outPng?: string)
Render one page of a source as PNG (stored as data and written to outPng if given) to pick a crop box
ArgumentTypeDescription
keystring
pagenumber
dpi?number72 dpi: 1 px = 1 PDF point, so pixel positions are crop points
outPng?string
fn figure_crop(key: string, page: number, label: string, section: string, dpi?: number, trim?: boolean, pad?: number)
Crop a figure/table from a source page into assets/<section>/<key>_<label>.png and record its provenance (page, box, dpi, checksums)
ArgumentTypeDescription
keystring
pagenumber
labelstringe.g. table1, fig2D
sectionstringAsset sub-folder, e.g. history
dpi?number
trim?booleanShrink the box to the ink inside it (give a generous box)
pad?numberMargin kept around the ink when trimming, in points
fn journal(text: string, slide?: string, ref?: string)
Record a step of building the deck: a decision, the author's request, a change, with the reason. Capture the process, not just the result
ArgumentTypeDescription
textstringWhat and why, e.g. 'deleted Pasteur slide: off-message for this audience'
slide?stringSlide title it concerns
ref?string
fn slide_add(kind: enum, file: string, title: string, figure?: string, image?: string, citation?: string, minutes?: number, notes?: string, reference?: string, subtitle?: string, maxHeight?: number, after?: string)
Write a slide from a house pattern into a section file. paper = title is the message + ONE figure (from figure_crop) + one .src + notes with timing and full ref/DOI; section; statement
ArgumentTypeDescription
kindenum
filestringSection .qmd relative to dir (created if missing)
titlestringpaper: the message; section: section title; statement: the sentence (markdown ok)
figure?stringpaper: '<key>-<label>' of a figure_crop record
image?stringpaper without a figure record: image path
citation?string
minutes?number
notes?stringWhat you will say (speaker notes)
reference?stringFull reference for the notes
subtitle?string
maxHeight?number
after?stringInsert after the slide whose title contains this; default: append
fn pptx_inventory(path: string)
List the slides of an old PowerPoint deck: titles, text, speaker notes, hidden, media
ArgumentTypeDescription
pathstring.pptx, or .key (converted via Keynote)
fn pptx_shapes(path: string, slide: number)
List the top-level shapes of one PowerPoint slide (ids for pptx_layer)
ArgumentTypeDescription
pathstring
slidenumber
fn pptx_extract(path: string, slides: array, section: string, images?: boolean)
Pull the original images out of chosen slides of a PowerPoint deck into assets/<section>/ (full resolution); images=true also renders the slides through Keynote
ArgumentTypeDescription
pathstring
slidesarraySlide numbers
sectionstring
images?booleanAlso render whole slides via Keynote (macOS)
fn pptx_layer(path: string, slide: number, name: string, keep?: array, drop?: array, section: string, transparent?: boolean)
Export ONE PowerPoint slide with only chosen shapes (keep) or without some (drop) as PNG, via Keynote; transparent=true knocks out white. For layered animations
ArgumentTypeDescription
pathstring
slidenumber
namestringLayer name, e.g. probe, bg, call_up
keep?arrayShape ids to keep (see pptx_shapes)
drop?arrayShape ids to drop
sectionstring
transparent?boolean
fn pptx_to_qmd(path: string, slides: array, file: string)
Write a .qmd stub for chosen PowerPoint slides (title, extracted images, old notes, a CHECK to sort each slide: reuse / redraw / re-crop)
ArgumentTypeDescription
pathstring
slidesarray
filestringOutput .qmd relative to dir (must not exist)
fn export_pptx(out?: string, scale?: number, store?: boolean)
PowerPoint version of the built deck: one full-bleed image per slide (all fragments shown) with the speaker notes. Looks exactly as rendered; not editable
ArgumentTypeDescription
out?stringOutput .pptx (default: next to the deck)
scale?numberScreenshot scale (1.5 → 1920×1080)
store?boolean

Resources

outline(infinite)— Static outline of the deck source
build(infinite)— Record of a Quarto render: input hash, versions, warnings
check(infinite)— Browser check of the built deck: slides, overflow
source(infinite)— A registered source PDF: citation, DOI, checksum, caption index
hits(7d)— Text search hits in a source
figure(infinite)— A figure/table cropped from a source into the deck assets, with provenance
journal(infinite)— How the deck was built: decisions, requests, changes, sources, figures, ported slides
slide(infinite)— A slide written from a house pattern
pptxInventory(infinite)— Slides of an old PowerPoint deck: titles, text, notes, media
pptxExtract(infinite)— Media and slide images pulled out of a PowerPoint deck into assets
layer(infinite)— A shape layer of a PowerPoint slide exported as PNG
pptxInfo(infinite)— Exported PowerPoint version of the deck
pdfInfo(infinite)— Exported PDF: path, pages, size

Files

pagePreview(image/png)— Rendered page of a source PDF, for choosing a crop box
renderLog(text/plain)— Quarto render log
sheet(image/png)— Contact sheet of the built deck (PNG)
pptx(application/vnd.openxmlformats-officedocument.presentationml.presentation)— PowerPoint version of the deck (one image per slide + notes)
pdf(application/pdf)— Distribution PDF of the deck
03Workflows1
@vcjdeboer/quarto-deck-build0dcee05f-3137-46a7-921b-f0b83b94fdce

Outline, render, check and export a Quarto reveal.js deck (one model per deck)

buildOutline the source, render it, check every slide
1.outline${{ inputs.deck }}.outline
2.render${{ inputs.deck }}.render
3.check${{ inputs.deck }}.check
exportDistribution PDF and (optionally) PowerPoint
1.pdf${{ inputs.deck }}.export_pdf
2.pptx${{ inputs.deck }}.export_pptx
04Reports1
@vcjdeboer/quarto-deck/deck-summarymethod
deck_summary_report.ts

Deck state on one page: time budget vs slot, open CHECKs, overflow, figure provenance, references, builds/exports and the build journal

presentationsummary
05Skills1
quarto-deck-authoring1 file
06Previous Versions2
2026.10.23.1
2026.10.22.1
07Stats
A
93 / 100
Downloads
4
Archive size
229.8 KB
  • Has README or module doc2/2earned
  • README has a code example1/1earned
  • README is substantive1/1earned
  • Most symbols documented1/1earned
  • No slow types (deprecated)1/1earned
  • Dependencies pass trust audit2/2earned
  • Has description1/1earned
  • Platform support declared (or universal)2/2earned
  • License1/2partial

    no SPDX license declared

  • Verified public repository2/2earned

09Platforms
10Labels