Quarto: An 'evolved' technical and scientific publishing system compatible with Scrivener

There is a great new technical and scientific publishing tool now available:

Based on Pandoc, it integrates several additional filters and an opinionated (and IMO elegant and practical) set of publishing templates for a pretty comprehensive feature-set. Given this is Pandoc based, a wide range of output formats is available, all driven by meta-data. The Quarto command itself bundles all this together so a Pandoc install itself is not required. The documentation is really excellent, making some quite complex features (like sub-figure layout) very accessible.

Scrivener’s amazingly flexible Markdown output and its post-processor makes Scrivener+Quarto a very viable workflow. One minor wrinkle is for Quarto’s optional project system (to generate complete websites or books) where multiple files define multiple chapters, but a small pre-processor script to take Scrivener’s output and split it on # Headings would be trivial and solve this issue. You don’t need to use this one file per chapter mode if you don’t want, in which case Scrivener’s output will be fine…

EDIT: For macOS, quarto can be easily installed by homebrew: brew install quarto — for Windows users, there is also a scoop bucket containing quarto: GitHub - cderv/r-bucket: Personal scoop bucket I use as an R user and software engineer


Hi nontroppo,

Thanks for the info … I’ve just installed Quarto … and checked the install with:

quarto check install

and everything came back as ‘OK’.

Do I also need to install scoop? and if so, how (on MacOS)?

Thanks again

No, scoop is an equivalent package manager to brew on macOS, you can only use scoop on Windows. You don’t need to use a package manager, as quarto is also available as a a standalone install package.

As an aside, quarto itself can install and maintain a minimal LaTeX system for you: quarto tools install tinytex and quarto tools update tinytex — installing this customised mini TeX Live distribution: TinyTeX - A lightweight, cross-platform, portable, and easy-to-maintain LaTeX distribution based on TeX Live - Yihui Xie | 谢益辉 - which at least for R users can fully automated installing missing LaTeX packages etc.

Remember that quarto is “opinionated” in its final layout, a layout that has been assigned with specific templates for HTML, PDF, DOCX etc. — as Pandoc sits underneath you can still tweak away under the curtain, but that is not really the point. For users who want maximum control, stick to Pandoc…

1 Like

I wish there is a way to render Markdown on Scrivener while editing a document. Not really that important tho :grin:

Well, if you used macOS you could use the wonderful Marked2 — it can run pandoc with options directly on a Scrivener project to live render your Scrivener project while writing… :stuck_out_tongue_winking_eye:

(It wouldn’t be too difficult to do something similar on Windows if you were proficient at coding: the Scrivener files that represent the binder are simple RTF files and an RTF>MD converter trigger by a file watcher could get source that could be rendered using quarto or pandoc directly. But yeah, you’d need to be a proficient geek for that…)

1 Like

By the way, what is your workflow to trigger Quarto from Scrivener?

I made a small wrapper script to allow most quarto features to work with Scrivener styles:

Just popping in to say: I think I’ll still use my Scrivener+Pandoc+pandoc-crossref workflow when I’m writing on my own. But I just used Quarto (in rstudio) for the first time in preparation for collaborating with another, and I gotta say I like it a lot. It is amazing to have a free writing environment that…just works with Pandoc. The fact that you can easily output to pdf and docx without having to change anything except the format specification is amazing. In order to implement that with Scrivener, I had to create two formats, one that put “\noindent” before text I didn’t wanted indented (e.g. ones that follow blockquotes or equations), and one that wrapped the text in a div span that pandoc used in conjunction with a docx reference file. That is how I still roll, but since setting that up I’ve learned about this wonderful lua filter that works for both outputs with no changes needed. The filter also works with Quarto in rstudio, which is a wonderful development indeed.

Quarto V1.4 is officially released:

The full changelog is massive, but at least for Scrivener users the big changes are more flexible cross-referencing and bundling Typst. Quarto therefore now integrates Pandoc, custom filters and templates, and the Typst PDF engine, so you can go from flexible plain text to complex layout finalised PDF (alongside HTML/DOCX/websites etc.) without any other dependencies…


Quarto is an amazing ecosystem, and I’m very grateful to the work that’s going into it. Do you have any concerns about the recent layoffs/buyouts at Posit? Also, do you know of any built-in ability to designate \noindent across formats, other than the ability to use a lua filter like this one?

With it being open source under the MIT License, and a project that has a solid following, even if the patron company cut support I bet it turns out okay in the end. A tool like this tends to fare well in an environment where its user base leans technical.

1 Like

Right, most of the core of Quarto is actually Typsecript and Lua, two languages that are well known and fairly easy to understand, and most of the development is driven by few developers, so I think it is a fair fit for a non-profitproject that can move forwards. I didn’t follow the Posit layoffs to be honest, that seems a shame as thier core technology, the Tidyverse, is a significant and helpful contribution to both academic and other optimisation of understanding data. Companies which develop an open-source core, then embellish it with perks for corporate monkeys seem somehow more noble…

No, I’ve never looked at more precise indentation rule, I am happy with the defaults (we biologists are not fussy!). Is this “rule” well established? If so perhaps you can ask on the Pandoc disuss forum on Github. Jon is often pretty open to improving Pandoc’s default output if it makes sense (as Pandoc does express this rule already, just not in the conditional rules you want). The fact there is a Lua filter for this, and indeed the fact Quarto exists at all, is a testament to how adaptable Pandoc is.


@jpkell — either this is your request, or a freaky coincidence: Provide a way to continue paragraphs after block quotes · jgm/pandoc · Discussion #9375 · GitHub — the good new being Jon, the Pandoc developer also suffers from this and would like some native solution…

Huzzah! (that wasn’t me, but I’m glad it’s on JM’s radar).

I love Scrivener+Pandoc, and will probably use it until for some reason I can’t. My setup (thanks to the help of @AmberV) enables to me apply \nonident or else a no-indent div span, depending on my desired output. I love the whole thing. But when I evangelize pandoc and plain text writing to others, it’s hard for me to insist they must learn/use my Scrivener setup if they want to achieve no-indent flexibility across formats. That lua filter seems to work in Quarto, but I’ve been hoping they’d incorporate it natively.