v1.8 backports
In previous releases
- (#6607): Add missing beamer template update for beamer theme options:
colorthemeoptions
, fontthemeoptions
, innerthemeoptions
and outerthemeoptions
.
- (#12625): Fire resize event on window when light/dark toggle is clicked, to tell widgets to resize.
- (#12657): Load Giscus in generated script tag, to avoid wrong-theming in Chrome.
- (#12700): Giscus not loading on a site without dark mode configured.
- (#12780):
keep-ipynb: true
now works again correctly and intermediate .quarto_ipynb
is not removed.
- (#12627): Don’t actually install extension when user responds
yes
to first prompt but no
to second.
- (#12753): Support change in IPython 9+ and import
set_matplotlib_formats
from matplotlib_inline.backend_inline
in the internal setup.py
script used to initialize rendering with Jupyter engine.
- (#12870): Update QuartoNotebookRunner to 0.17.3.
- (#13051): Fixed support for captioned Markdown table inside Div syntax for crossref. This is special handling, but this could be output by function like
knitr::kable()
with old option support.
v1.7 changes
Regression fixes
- (#11509): Fix link-decoration regression in HTML formats.
- (#11532): Fix regression for #660, which causes files to have incorrect permissions when Quarto is installed in a location not writable by the current user.
- (#11549): Fix regression in rendering
dashboard
tabsets into cards without titles.
- (#11561): Fix a regression with
$border-color
that impacted, callouts borders, tabset borders, and table borders of the defaults themes. $border-color
is now correctly a mixed of $body-color
and $body-bg
even for the default theme.
- (#11580): Fix regression with documents containing
categories
fields that are not strings.
- (#11659):
julia
engine - Fix escaping bug where paths containing spaces or backslashes break server startup on Windows.
- (#11752): Fix regression with non-alphanumeric characters in
categories
preventing correct filtering of listing.
- (#11943): Fix callout title color on dark theme in revealjs following Revealjs update in quarto 1.6.
- (#11990): Do not print parameter cell in parameterized Jupyter notebooks.
- (#12147): for RevealJS format,
serif
and simple
themes defaults back to have their heading color ($presentation-heading-color
) to be the same as the body color ($body-color
) as in Quarto 1.5.
Dependencies
- Update
typst
to 0.13.0
.
- Update
pandoc
to 3.6.3
.
- Update
dart-sass
to 1.85.1
.
- Update
esbuild
to 0.19.12
.
YAML validation
- (#10251): EJS template for website now uses proper object to get alt text for logo in sidebar.
- (#11654): Allow
page-inset
as value in column
key for code cells.
- (#12151): Fix YAML validation in computations cell on Windows. Validate YAML in documents in
julia
engine.
Projects
website
- (#8238): Listing categories are now sorted case-insensitively.
- (#10501): Improve documentation of
repo-actions
option.
- (#11701): Wrap HTML emitted by EJS templates in
{=html}
blocks to avoid memory blowup issues with Pandoc’s parser.
- (#12134): Forward
logo.small
images in _brand.yml
files to a website favicon
.
blog
- (#11745): Fix categories links under post title in post with url encoded path (e.g. with space or other special characters).
book
- (#11520): Book’s cover image now escapes lightbox treatment, which was incorrectly applied to it when
lightbox: true
was set in the book’s configuration.
- (#12134): Forward
logo.small
images in _brand.yml
files to the favicon
of the book’s website.
Commands
quarto check
- (#10047):
quarto check
will now check binary dependency versions strictly by default. Use quarto check --no-strict
to revert to old behavior.
- (#10561):
quarto check
will now report paths of binary dependencies.
- (#11608): Do not issue error message when calling
quarto check info
.
- (#12433): Add
--output
option to quarto check
to produce structured JSON output.
quarto convert
- (#12042): Preserve Markdown content that follows YAML metadata in a
raw
.ipynb cell.
- (#12318): Ensure enough line breaks between cells that might be trimmed.
quarto inspect
- (#12336): Clean up transient files created by
quarto inspect
.
Engines
julia
- (#11803): Added subcommands
status
, kill
, close [--force]
and log
under the new CLI command quarto call engine julia
.
- (#12121): Update QuartoNotebookRunner to 0.17.0. Support for evaluating Python cells via PythonCall.jl added. Support for notebook caching via
execute.cache
added.
- (#12151): Basic YAML validation is now active for documents using Julia engine.
jupyter
- (#9089): Serialize compound
jupyter
metadata into a special key-value attribute to not break Pandoc’s fenced div parsing.
- (#10113): KaTeX will now load correctly in
engine: jupyter
documents using emebed-resources: true
.
- (#12114):
JUPYTERCACHE
environment variable from Jupyter cache CLI is now respected by Quarto when cache: true
is used. This environment variable allows to change the path of the cache directory.
- (#12228):
quarto render
will now fails if errors are detected at IPython display level. Setting error: true
globally or at cell level will keep the error to show in output and not stop the rendering.
- (#12374): Detect language properly in Jupyter notebooks that lack the
language
field in their kernelspec
s.
Quarto PDF rendering
- (#12194): More specific checks added in log parsing to automatically find missing fonts.
Shiny
- (#12059):
quarto preview
now correctly run on Windows an interactive Quarto doc with Jupyter engine and py-shiny, when using a *.py
file as resource.
Lua Filters and extensions
- Add
quarto.paths.tinytex_bin_dir
to Quarto’s Lua API. If TinyTeX is found by Quarto, this will be set to the path to the bin
directory of the TinyTeX installation where command line tool are located (e.g., pdflatex
, tlmgr
, etc.). If TinyTeX is not found, this will be nil
, meaning Quarto will use the system PATH to find the command line tools.
- Fix
pandoc.mediabag
Lua typings so autocompletions work with the Lua LSP integration.
- (#11379): Add
version
shortcode to display the current Quarto version.
- (#11526): General improvements to the style and robustness of Quarto’s Lua code. This also provides a new public function
quarto.utils.is_empty_node
that allows to check whether a node is empty, i.e., whether it’s an empty list, has no child nodes, and contains no text.
- (#11664):
lipsum
shortcode is no longer randomly generated by default, use Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sagittis posuere ligula sit amet lacinia. Duis dignissim pellentesque magna, rhoncus congue sapien finibus mollis. Ut eu sem laoreet, vehicula ipsum in, convallis erat. Vestibulum magna sem, blandit pulvinar augue sit amet, auctor malesuada sapien. Nullam faucibus leo eget eros hendrerit, non laoreet ipsum lacinia. Curabitur cursus diam elit, non tempus ante volutpat a. Quisque hendrerit blandit purus non fringilla. Integer sit amet elit viverra ante dapibus semper. Vestibulum viverra rutrum enim, at luctus enim posuere eu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Nunc ac dignissim magna. Vestibulum vitae egestas elit. Proin feugiat leo quis ante condimentum, eu ornare mauris feugiat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris cursus laoreet ex, dignissim bibendum est posuere iaculis. Suspendisse et maximus elit. In fringilla gravida ornare. Aenean id lectus pulvinar, sagittis felis nec, rutrum risus. Nam vel neque eu arcu blandit fringilla et in quam. Aliquam luctus est sit amet vestibulum eleifend. Phasellus elementum sagittis molestie. Proin tempor lorem arcu, at condimentum purus volutpat eu. Fusce et pellentesque ligula. Pellentesque id tellus at erat luctus fringilla. Suspendisse potenti.Etiam maximus accumsan gravida. Maecenas at nunc dignissim, euismod enim ac, bibendum ipsum. Maecenas vehicula velit in nisl aliquet ultricies. Nam eget massa interdum, maximus arcu vel, pretium erat. Maecenas sit amet tempor purus, vitae aliquet nunc. Vivamus cursus urna velit, eleifend dictum magna laoreet ut. Duis eu erat mollis, blandit magna id, tincidunt ipsum. Integer massa nibh, commodo eu ex vel, venenatis efficitur ligula. Integer convallis lacus elit, maximus eleifend lacus ornare ac. Vestibulum scelerisque viverra urna id lacinia. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Aenean eget enim at diam bibendum tincidunt eu non purus. Nullam id magna ultrices, sodales metus viverra, tempus turpis.Duis ornare ex ac iaculis pretium. Maecenas sagittis odio id erat pharetra, sit amet consectetur quam sollicitudin. Vivamus pharetra quam purus, nec sagittis risus pretium at. Nullam feugiat, turpis ac accumsan interdum, sem tellus blandit neque, id vulputate diam quam semper nisl. Donec sit amet enim at neque porttitor aliquet. Phasellus facilisis nulla eget placerat eleifend. Vestibulum non egestas eros, eget lobortis ipsum. Nulla rutrum massa eget enim aliquam, id porttitor erat luctus. Nunc sagittis quis eros eu sagittis. Pellentesque dictum, erat at pellentesque sollicitudin, justo augue pulvinar metus, quis rutrum est mi nec felis. Vestibulum efficitur mi lorem, at elementum purus tincidunt a. Aliquam finibus enim magna, vitae pellentesque erat faucibus at. Nulla mauris tellus, imperdiet id lobortis et, dignissim condimentum ipsum. Morbi nulla orci, varius at aliquet sed, facilisis id tortor. Donec ut urna nisi.Aenean placerat luctus tortor vitae molestie. Nulla at aliquet nulla. Sed efficitur tellus orci, sed fringilla lectus laoreet eget. Vivamus maximus quam sit amet arcu dignissim, sed accumsan massa ullamcorper. Sed iaculis tincidunt feugiat. Nulla in est at nunc ultricies dictum ut vitae nunc. Aenean convallis vel diam at malesuada. Suspendisse arcu libero, vehicula tempus ultrices a, placerat sit amet tortor. Sed dictum id nulla commodo mattis. Aliquam mollis, nunc eu tristique faucibus, purus lacus tincidunt nulla, ac pretium lorem nunc ut enim. Curabitur eget mattis nisl, vitae sodales augue. Nam felis massa, bibendum sit amet nulla vel, vulputate rutrum lacus. Aenean convallis odio pharetra nulla mattis consequat.
to restore randomness.
- (#11699): Fix crash with
video
shortcode inside HTML comments.
- (#11896): fix
\f
(
) form feed character not valid in PowerPoint (pptx
).
- (#12326): Add
quarto.shortcode.*
API entry points for shortcode developers.
- (#12365):
brand color
shortcode takes an optional brandMode
second parameter, default light
.
- (#12453): Expose
_quarto.modules.brand
as quarto.brand
and add has_mode()
function.
- (#12564):
brand logo
shortcode also takes an optional brandMode
second parameter, default light
.
Conditional Content
- (#4411): Added support for new format and aliases in
when-format
and unless-format
: confluence
, docusaurus
(and docusaurus-md
), email
, dashboard
, gfm
, hugo
(and hugo-md
).
Quarto Lua API
- (#4411):
quarto.format.is_format
is now working as expected with support of more aliases: confluence
, docusaurus
(and docusaurus-md
), email
, dashboard
, gfm
, hugo
(and hugo-md
)
- (#12299):
quarto.doc.pdf_engine()
now correctly returns the PDF engine used for the document. quarto.doc.cite_method()
now returns nil
if no citation method will be used (i.e. no references is the document set).
Languages
- (#12366): Added Bulgarian translation for Quarto UI text (credit: @sakelariev)
quarto publish
- (#9929):
quarto publish gh-pages
will now clean previous worktree directory leftover from previous deploys.
Other Fixes and Improvements
- A new folder
quarto-session-temp
can be created in .quarto
to store temporary files created by Quarto during a rendering. Reminder: .quarto
is for internal use of Quarto and should not be versioned (thus added to .gitignore
).
- (fb38eb5) Use the
latest
parser for Acorn when analyzing JS code imported from OJS blocks.
- (#7260): Add support for
active
class in tabsets so the .active
tab shows up by default.
- (#7757): Session temporary files are now cleaned up when the session ends abnormally (e.g.
Ctrl+C
) also on Windows.
- (#8613): Fix
giscus
color on load to support dark mode (by @kv9898).
- (#9867): Blank lines are now trimmed in Raw HTML Table blocks.
- (#10532): Changed default of
--headless=old
to --headless
as Chrome 132 has removed old headless mode and only support new mode. To use old mode, set QUARTO_CHROMIUM
to a new chrome-headless-shell
binary or to an older chrome version (between 128 and 132). Set QUARTO_CHROMIUM_HEADLESS_MODE
to old
to use old headless mode with that compatible version.
- (#10961): Add more information on which Chrome Headless will be used in
quarto check install
. This is helpful to help debug mermaid issues.
- (#11441): Don’t add newlines around shortcodes during processing.
- (#11606): Added a new
QUARTO_DOCUMENT_FILE
env var available to computation engine to the name of the file currently being rendered.
- (#11643): Improve highlighting of nested code block inside markdown code block, i.e. using
```{python}
or ```python
inside ````markdown
fenced code block.
- (#11788):
quarto add
and quarto remove
will return non-zero code when they fail.
- (#11803): Added a new CLI command
quarto call
. First users of this interface are the new quarto call engine julia ...
subcommands.
- (#11951): Raw LaTeX table without
tbl-
prefix label for using Quarto crossref are now correctly passed through unmodified.
- (#11967): Produce a better error message when YAML metadata with
!expr
tags are used outside of knitr
code cells.
- (#12117): Color output to stdout and stderr is now correctly rendered for
html
format in the Jupyter and Julia engines. This change includes support for ANSI color codes in output.
- (#12264): Upgrade
dart-sass
to 1.85.1.
- (#12238): Do not truncate very long console errors (e.g. in Jupyter Notebook with backtrace).
- (#12338): Add an additional workaround for the SCSS parser used in color variable extraction.
- (#12369):
quarto preview
correctly throws a YAML validation error when a format
key does not conform.
- (#12459): Add
.page-inset-*
classes to completions.
- (#12492): Improve shortcode extension template with new parameters and a link to docs.
- (#12513): Fix an issue with
quarto preview
when using DiagrammeR R package for Graphiz diagram.