All changes included in 1.9:
Regression fixes
(#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.
Dependencies
Update
pandocto 3.8.3Update
typstto 0.14.2Update
esbuildto 0.25.10Update
denoto 2.4.5(#13601): Update
mermaidto 11.12.0 (author: @multimeric)
Formats
gfm
(#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.
html
(#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.(#13883): Fix unequal top/bottom spacing in simple untitled callouts.
typst
(#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.(#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.)(#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)(#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])(https://github.com/quarto-dev/quarto-cli/pull/13978)): Keep term and description together in definition lists to avoid breaking across pages. (author: @mcanouil)
pdf
(#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.
revealjs
(#13722): Fix
light-content/dark-contentSCSS rules not included in Reveal.js format. (author: @mcanouil)
ipynb
(#13956): Fix crash when rendering to
ipynbformat with figure labels (#| label: fig-*) on cells for cross references.
Projects
(#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.
website
(#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).(#13951): Fix
image-lazy-loadingnot applyingloading="lazy"attribute to auto-detected listing images.
book
(#13769): Apply
repo-link-targetandrepo-link-reloptions to tools in book sidebar for consistent link attribute handling with website projects. (author: @mcanouil)
manuscript
(#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.
Publishing
Confluence
(#13414): Be more forgiving when Confluence server returns malformed JSON response. (author: @m1no)
Lua API
(#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)
Commands
use brand
(#13828): New
quarto use brandcommand copies and synchronizes the_brand/directory from a repo, directory, or ZIP file. See the prerelease documentation for details.
call build-ts-extension
(): 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.
install verapdf
(#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.
preview
(#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.
Extensions
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.
Engines
jupyter
(#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.
knitr
(#13958): Use max precision for
ojs_definenumber like this is the case forjupyterorjuliaengine.
Other fixes and improvements
(#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".