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.
- (#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).
- (#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. - (#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.) - (#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. - (#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.
- (#13870): Add support for
altattribute on cross-referenced equations for improved accessibility. (author: @mcanouil) - (#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.
- (#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. - (#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.
- (#13722): Fix
light-content/dark-contentSCSS rules not included in Reveal.js format. (author: @mcanouil)
- (#13956): Fix crash when rendering to
ipynbformat with figure labels (#| label: fig-*) on cells for cross references.
- (#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. - (#14003): Add text fragments to search result links so browsers scroll to and highlight the matched text on the target page.
- (#9802, #14047): Fix search term highlighting disappearing on page scroll or layout events when navigating from search results. (author: @jtbayly, #13442)
- (#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.
- (#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. - (#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. - (#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.