All changes included in 1.9:
- (#13342): Ensure that the
contentsshortcode works inside metadata. - (#13489): Add
mode=plainoption to thekbdshortcode to render keyboard shortcuts exactly as written, without OS-specific symbol translation. - (#14061): Fix
metashortcode not preserving line breaks in values. The shortcode now respects its usage context (block, inline, or text) and preserves paragraph breaks in block and code block contexts.
- (#13396): Fix
quarto publish connectregression. - (#13441): Catch
undefinedexceptions in Pandoc failure to avoid spurious error message. - (#13046): Use new url for multiplex socket.io server https://multiplex.up.railway.app/ as default for
format: revealjsandrevealjs.multiplex: true. - (#13506): Fix navbar active state detection when sidebar has no logo configured. Prevents empty logo links from interfering with navigation highlighting.
- (#13616): Fix fatal error when rendering manuscript projects with custom blocks like ConditionalBlock.
- (#13625): Fix Windows file locking error (os error 32) when rendering with
--output-dirflag. Context cleanup now happens before removing the temporary.quartodirectory, ensuring file handles are properly closed. - (#13633): Fix detection and auto-installation of babel language packages from newer error format that doesn't explicitly mention
.ldffilename. - (#13694): Fix
notebook-view.urlbeing ignored - external notebook links now properly use specified URLs instead of local preview files. - (#13732): Fix automatic font package installation for fonts with spaces in their names (e.g., "Noto Emoji", "DejaVu Sans"). Font file search patterns now match both with and without spaces.
- Update
pandocto 3.8.3- (#13925): Pandoc 3.8.3 introduces
^[text]^as inline footnote syntax. This conflicts with superscript containing a Span at the start (e.g.,^[text]{.class}^) since the^[sequence now triggers footnote parsing. A workaround is to insert a zero-width space or other invisible character between^and[.
- (#13925): Pandoc 3.8.3 introduces
- Update
typstto 0.14.2 - Update
esbuildto 0.25.10 - Update
denoto 2.4.5 - (#13601): Update
mermaidto 11.12.0 (author: @multimeric)
- (#13878): Add
syntax-highlightingoption replacing the deprecatedhighlight-stylein Pandoc 3.8. It supports style names (e.g.,tango,github), custom.themefiles,noneto disable highlighting, oridiomaticfor native format highlighting. Thehighlight-styleoption remains supported but is deprecated.
- (#13421): Do not word-wrap titles in header.
- (#13603): Fix callouts with title but no body content causing fatal error when rendering to GitHub Flavored Markdown.
- (#13882): Add support for multiple email outputs when rendering to
format: emailfor Posit Connect. - (#14021): Add
email-versionhook to override detected Connect version when rendering emails for Posit Connect. - (#14098): Add support for dynamic email recipients computed via Python or R code.
- (#14072): Add q syntax files
- (#11929): Import all
brand.typography.fontsin CSS, whether or not fonts are referenced by typography elements. - (#13413): Fix uncentered play button in
videoshortcodes from cross-reference divs. (author: @bruvellu) - (#13508): Add
aria-labelsupport tovideoshortcode for improved accessibility. - (#13685): Fix remote font URLs in brand extensions being incorrectly joined with the extension path, resulting in broken font imports.
- (#13825): Fix
column: marginnot working withrenderings: [light, dark]option. Column classes are now preserved when applying theme classes to cell outputs. - (#13883): Fix unequal top/bottom spacing in simple untitled callouts.
- (#13900): Warn when
renderingscell option contains duplicate names. Previously, duplicate names like[dark, light, dark, light]would silently use only the last output for each name. - (#14065): Fix
SCSSParsingErrorwhen custom SCSS themes contain non-ASCII characters in selectors (e.g.,#présentation).
- (#12803): Fix callout text being centered instead of left-aligned when callout has a cross-reference ID prefix (e.g.,
#tip-abc). - (#13249): Update to Pandoc's Typst template following Pandoc 3.8.3 and Typst 0.14.2 support:
- Code syntax highlighting now uses Skylighting by default.
- New template variables
mathfont,codefont, andlinestretchfor font and line spacing customization. - New template variables
linkcolor,citecolor, andfilecolorfor link color customization. - New template variable
thanksfor title footnote acknowledgment. - New template variable
abstract-titlefor abstract header customization. - PDF accessibility metadata: document title, author, and keywords are now set for PDF readers.
- Two-column layout now uses
set page(columns:)instead ofcolumns()function, fixing compatibility with landscape sections. - Title block now properly spans both columns in multi-column layouts.
- (#13362): Remove unused
blockquotedefinitions from template. - (#13452): Wraps subfigure captions generated by
quarto_super()inblockfunction to avoid emittingparelements. (author: @christopherkenny) - (#13474): Heading font for title should default to
mainfont. - (#13486): Update the Custom Typst Templates, which had been failing due to changes in the Typst language, to use the latest upstream packages and bundle them using
typst-gatherfor offline use. (ams, dept-news, fiction, ieee, letter, poster) - (#13555): Add support for
icon=falsein callouts when used informat: typst. - (#13589): Fix callouts with invalid ID prefixes crashing with "attempt to index a nil value". Callouts with unknown reference types now render as non-crossreferenceable callouts with a warning, ignoring the invalid ID.
- (#13602): Fix support for multiple files set in
bibliographyfield inbiblio.typtemplate partial. - (#13745): Fix relative
font-pathsfrom extensions or document metadata not resolving correctly for Typst compilation. Relative paths are now resolved against the document directory before being passed to the Typst CLI. - (#13775): Fix brand fonts not being applied when using
citeproc: truewith Typst format. Format detection now properly handles Pandoc format variants liketypst-citations. - (#13868): Add image alt text support for PDF/UA accessibility. Alt text from markdown captions and explicit
altattributes is now passed to Typst'simage()function. (Temporary workaround until jgm/pandoc#11394 is merged.) - (#13870): Add support for
altattribute on cross-referenced equations for improved accessibility. (author: @mcanouil) - (#13917): Fix brand logo paths not resolving correctly for Typst documents in project subdirectories. Brand logo paths are now converted to project-absolute paths before merging with document metadata, replacing the fragile
projectOffset()workaround. - (#13942): Fix Typst compilation errors showing confusing internal stack traces. Users now see only the relevant Typst error message.
- (#13950): Replace ctheorems with theorion package for theorem environments. Add
theorem-appearanceoption to control styling:simple(default, classic LaTeX style),fancy(colored boxes with brand colors),clouds(rounded backgrounds), orrainbow(colored start border and colored title). - (#13954): Add support for Typst book projects via format extensions. Quarto now bundles the
orange-bookextension which provides a textbook-style format with chapter numbering, cross-references, and professional styling. Book projects withformat: typstautomatically use this extension. - (#13978): Keep term and description together in definition lists to avoid breaking across pages. (author: @mcanouil)
- (#13878): Typst now uses Pandoc's skylighting for syntax highlighting by default (consistent with other formats). Use
syntax-highlighting: idiomaticto opt-in to Typst's native syntax highlighting instead. - (#14126): Fix Skylighting code blocks in Typst lacking full-width background, padding, and border radius. A postprocessor patches the Pandoc-generated Skylighting function to add
width: 100%,inset: 8pt, andradius: 2ptto the block call, matching the styling of native code blocks. Brandmonospace-block.background-coloralso now correctly applies to Skylighting output. This workaround will be removed once the fix is upstreamed to Skylighting. - (#14202): Fix CSS inlining (
juice) failing on Windows when Quarto is installed in a path with spaces (e.g.,C:\Program Files\Quarto\).
- (#4426): Add
pdf-standardoption for PDF/A, PDF/UA, and PDF version control. Supports standards likea-2b,ua-1, and versions1.7,2.0. Works with both LaTeX and Typst formats. - (#9091): Fix vertical alignment div has no effect for pdf output
- (#10291): Fix detection of babel hyphenation warnings with straight-quote format instead of backtick-quote format.
- (#13248): Fix image alt text not being passed to LaTeX
\includegraphics[alt={...}]for PDF accessibility. Markdown image captions andfig-altattributes are now preserved for PDF/UA compliance. - (#13661): Fix LaTeX compilation errors when using
mermaid-format: svgwith PDF/LaTeX output. SVG diagrams are now written directly without HTML script tags. Note:mermaid-format: pngis recommended for best compatibility. SVG format requiresrsvg-convert(or Inkscape withuse-rsvg-convert: false) in PATH for conversion to PDF, and may experience text clipping in diagrams with multi-line labels. - (rstudio/tinytex-releases#49): Fix detection of LuaTeX-ja missing file errors by matching both "File" and "file" in error messages.
- (#13667): Fix LaTeX compilation error with Python error output containing caret characters.
- (#13730): Fix TinyTeX detection when
~/.TinyTeX/directory exists without binaries. Quarto now verifies that the bin directory and tlmgr binary exist before reporting TinyTeX as available, allowing proper fallback to system PATH installations. - (#13919): Fix margin citations with citeproc showing unresolved
?quarto-cite:placeholders in PDF output. Caused by Pandoc 3.6+ adding\protectbefore\phantomsectionin bibliography anchors. - (#13249): Update to Pandoc's LaTeX template following Pandoc 3.8.3 support:
- New RTL support for LuaTeX with
\RL,\LRcommands andRTL,LTRenvironments. - New
shorthandsvariable for Babel language shortcuts control. - New
pdf-trailer-idsupport for reproducible PDF builds. - New
cancelpackage support for\cancelcommand in math.
- New RTL support for LuaTeX with
- (#14017):
tColorOptions()in .tex file will now always have options in alphabetical order. Previously, they were in random order leading to a different .tex intermediates for identical .qmd. - (#14241): Add
QUARTO_PDF_STANDARDenvironment variable as a fallback for thepdf-standardoption. Accepts comma-separated values (e.g.,QUARTO_PDF_STANDARD=ua-2), enabling PDF standard conformance without modifying document YAML. Works with both LaTeX and Typst formats.
- (#13722): Fix
light-content/dark-contentSCSS rules not included in Reveal.js format. (author: @mcanouil) - (#13781): Fix
axeaccessibility checks failing with SCSS compilation error for revealjs format. Axe now loads as a standalone module for all HTML formats with format-specific report placement. - (#13852): Scroll-view options (
scrollSnap,scrollProgress,scrollActivationWidth,scrollLayout) are now rendered in the Pandoc template instead of injected at runtime. Custom revealjs templates may need updating to include the scroll-view configuration block. - (#14125): Add format-specific
axeaccessibility report for revealjs when usingaxe: {output: document}. Report appears as a dedicated slide appended to the deck with hover-to-highlight navigation to offending slides.
- (#14125): Add format-specific
axeaccessibility report for dashboards when usingaxe: {output: document}. Report appears as a Bootstrap offcanvas sidebar with automatic rescan when switching pages, card tabsets, or toggling the sidebar.
- (#13956): Fix crash when rendering to
ipynbformat with figure labels (#| label: fig-*) on cells for cross references.
- (#13712): Add support for tabset fragments in Reveal.js presentations, allowing content within tabs to be revealed incrementally during presentations. (author: @mcanouil)
- (#12444): Improve pre/post render script logging with
Running scriptprefix and addQUARTO_PROJECT_SCRIPT_PROGRESSandQUARTO_PROJECT_SCRIPT_QUIETenvironment variables so scripts can adapt their output. - (#13892): Fix
output-dir: ./deleting entire project directory.output-dirmust be a subdirectory of the project directory and check is now better to avoid deleting the project itself when it revolves to the same path.
- (#13524): Add support for Plausible Analytics via
plausible-analyticsconfiguration option. Users can either paste their Plausible script snippet directly in YAML or provide a path to a file containing the snippet usingplausible-analytics: { path: _plausible_snippet.html }. - (#13525): Algolia Insights now uses privacy-friendly defaults:
useCookie: falsewith random session tokens when cookie consent is not configured. Whencookie-consent: trueis enabled, Algolia scripts are deferred and only use cookies after user grants "tracking" consent, ensuring GDPR compliance. - (#13547)
cookie-content: { type: express }is now the default. Previously it wastype: implied. It now means this will block cookies until the user expressly agrees to allow them (or continue blocking them if the user doesn't agree). - (#13570): Replace Twitter with Bluesky in default blog template and documentation examples. New blog projects now include Bluesky social links instead of Twitter.
- (#13716): Fix draft pages showing blank during preview when pre-render scripts are configured.
- (#13847): Open graph title with markdown is now processed correctly. (author: @mcanouil)
- (#13910): Add support for
logo: falseto disable sidebar and navbar logos when using_brand.yml. Works in website projects (sidebar.logo: false,navbar.logo: false) and book projects (book.sidebar.logo: false,book.navbar.logo: false). - (#13932): Add
llms-txt: trueoption to generate LLM-friendly content for websites. Creates.llms.mdmarkdown files alongside HTML pages and a rootllms.txtindex file following the llms.txt specification. - (#13951): Fix
image-lazy-loadingnot applyingloading="lazy"attribute to auto-detected listing images. - (#9802, #14047): Fix search term highlighting disappearing on page scroll or layout events when navigating from search results. (author: @jtbayly, #13442)
- (#14080): Algolia search results now highlight matching terms on the target page. Search term highlighting also works when matches span across formatted text (e.g., inline code, syntax highlighting).
- (#12136): Fix false
citeproc: citation not foundwarnings when book metadata URLs contain@(e.g., Mastodon links). The@in URL strings is now escaped before passing to Pandoc, preventing misinterpretation as citation references. - (#13769): Apply
repo-link-targetandrepo-link-reloptions to tools in book sidebar for consistent link attribute handling with website projects. (author: @mcanouil)
- (#10031): Fix manuscript rendering prompting for GitHub credentials when origin points to private repository. Auto-detection of manuscript URL now fails gracefully with a warning instead of blocking renders.
- (#14027): Add
quarto publish posit-connect-cloudfor publishing static content to Posit Connect Cloud.
- (#12558): Fix 500 error when updating multiple Confluence attachments. Attachments are now uploaded sequentially instead of concurrently. (author: @fkgruber)
- (#13414): Be more forgiving when Confluence server returns malformed JSON response. (author: @m1no)
- (#14046): Fix
quarto publish gh-pagesleaving stale worktrees whengit commitfails due to missinguser.name/user.emailconfiguration. Git identity is now validated before worktree creation, and worktree cleanup uses--forceto handle modified/untracked files.
- (#13762): Add
quarto.paths.typst()to Quarto's Lua API to resolve Typst binary path in Lua filters and extensions consistently with Quarto itself. (author: @mcanouil)
- (#13828): New
quarto use brandcommand copies and synchronizes the_brand/directory from a repo, directory, or ZIP file. See the prerelease documentation for details.
- (): New
quarto call build-ts-extensioncommand builds a TypeScript extension, such as an engine extension, and places the artifacts in the_extensionsdirectory. See the engine extension pre-release documentation for details.
- (#4426): New
quarto install verapdfcommand installs veraPDF for PDF/A and PDF/UA validation. When verapdf is available, PDFs created with thepdf-standardoption are automatically validated for compliance. Also supportsquarto uninstall verapdf,quarto update verapdf, andquarto tools. - (#11877, #10961, #6821, #13704): New
quarto install chrome-headless-shellcommand downloads Chrome Headless Shell from Google's Chrome for Testing API. This is the recommended headless browser for diagram rendering (Mermaid, Graphviz) to non-HTML formats. Smaller and lighter than full Chrome, with fewer system dependencies. - (#12124): Support
quarto install tinytexon ARM64 Linux and adopt new TinyTeX naming scheme with.tar.xzcompression.
- (#13804): Fix intermittent preview crashes during re-renders by properly managing project context lifecycle. Resolves issues with missing temporary directories and
quarto_ipynbfiles when editing notebooks and qmd files together.
-
Metadata and brand extensions now work without a
_quarto.ymlproject. (Engine extensions do too.) A temporary default project is created in memory. -
New Engine Extensions, to allow other execution engines than knitr, jupyter, julia. Julia is now a bundled extension. See the prerelease notes and engine extension documentation.
- (#13748): Fix stdin encoding to UTF-8 on Windows to correctly handle JSON in documents containing non-ASCII characters.
- (#13936): Add support for q/kdb+ programming language in percent format notebooks and code cell options. (author: @benlubas)
- (#13936): Fix
isJupyterPercentScriptregex to correctly detect percent scripts with[raw]cells and cells not at the start of the file. The regex now properly groups the alternation(markdown|raw)and uses multiline mode.
- (#13958): Use max precision for
ojs_definenumber like this is the case forjupyterorjuliaengine.
- (#8730): Detect x64 R crashes on Windows ARM and provide helpful error message directing users to install native ARM64 R instead of showing generic "check your R installation" error.
- (#13402):
nfpm(https://nfpm.goreleaser.com/) is now used to create the.debpackage, and new.rpmpackage. Both Linux packages are also now built forx86_64(amd64) andaarch64(arm64) architectures. - (#13528): Adds support for table specification using nested lists and the
list-tableclass. - (#13575): Improve CPU architecture detection/reporting in macOS to allow quarto to run in virtualized environments such as OpenAI's
codex. - (#13656): Fix R code cells with empty
lang: ""option producing invalid markdown class attributes. - (#13776): Do not process tblwidths attributes for non-simple tables, since this breaks rowspan handling.
- (#13832): Fix
license.textmetadata not being accessible when using an inline license (license: "text"), and populate it with the license name for CC licenses instead of empty string. (author: @mcanouil) - (#13856): Add code annotation support for Typst and Observable.js code blocks. (author: @mcanouil)
- (#13890): Fix render failure when using
embed-resources: truewith input path through a symlinked directory. The cleanup now resolves symlinks before comparing paths. - (#13907): Ignore AI assistant configuration files (
CLAUDE.md,AGENTS.md) when scanning for project input files and in extension templates, similar to howREADME.mdis handled. - (#14198): Ignore
.local.mdvariants of AI assistant configuration files (CLAUDE.local.md,AGENTS.local.md) during project render andquarto use template. - (#13935): Fix
quarto install,quarto update, andquarto uninstallinteractive tool selection. - (#13992): Fix crash when rendering div with both cross-reference ID and conditional visibility to PDF.
- (#13997): Fix Windows dart-sass theme compilation failing when Quarto is installed in a path with spaces (e.g.,
C:\Program Files\) and the project path also contains spaces. - (#13998): Fix YAML validation error with CR-only line terminators (old Mac format). Documents using
\rline endings no longer fail with "Expected YAML front matter to contain at least 2 lines". - (#14012): Add
fr-CAlanguage translation for Quebec French inclusive writing conventions, using parenthetical forms instead of middle dots for author labels. (author: @tdhock) - (#14032): Add
editor_optionswithchunk_output_typeto YAML schema for autocompletion and validation in RStudio and Positron. - (#14156): Avoid O(n^2) performance in handling large code blocks.