Quarto, Pluto.jl, TypstJlyfish.jl, BonitoBook.jl, Weave.jl?

I want to make a document integrating math, code, and prose, interpolating code results into math.

I’ve heard of Quarto, Pluto.jl, TypstJlyfish.jl, BonitoBook.jl, Weave.jl. Can anyone comment on choosing between them?

Are they targeting different use cases? What works well? What poorly?

1 Like

I only used Pluto among those – and it works quite well for what it supports. Ie, no fancy complex layouts, basically single-column text + code (can be hidden) + code results, but these parts work smoothly. Exports to static HTML.

Formatted text is typically done with markdown, code results can be interpolated into it. This part isn’t really Pluto-specific, Pluto just displays whatever your code returns – be it the default md"..." macro or another markdown/html library.

1 Like

I haven’t try them all, but I think the first distinction should come on how much important is the text in relation to the code.

If the text is predominant, say a scientific paper, often solutions that are in markdown with embedded “chunks” of code are more practical.

At the opposite, if code is the predominant part, say a tutorial on a particular library, solutions where markdown comments/strings are “embedded” in the code are easier to work with (for these cases I use Literate.jl).

4 Likes

Quarto gives you the greatest variety of output options—book, website, slides, etc. It also has the greatest variety of ways to tweak layout and presentation. A lighter, Julia only, alternative is Franklin.jl. I haven’t used TypstJlyfish.jl, but did a code-heavy book in Typst, but not with code integration. Think of Typst as a LaTeX alternative. BonitoBook is still early days, and I haven’t used it much yet. Weave.jl will give you an engine but leaves most of the formatting work to you.

3 Likes

Quarto is the best tool I’ve found for presentations. I don’t think it can interpolate code results into math, though; only into Markdown (and that in a limited fashion).

1 Like

Quarto can do the interpolation in Julia, as well as Python and R.

1 Like

I just tested it and, indeed, interpolation into math works fine. Here’s an example:

---
title: "Test"
format:
    html:
engine: julia
---

## Interpolation test

```{julia}
x = 5
```

Into text: Variable `x` is equal to `{julia} x`.

Into math: $x = `{julia} x`$.
4 Likes

I recommend Handcalcs.jl for this. It works with notebooks and Quarto currently and potentially Typst in the future.

I did not have good luck with Weave, so I’d drop that option.
Then the rest are on a spectrum:
Pretty —————————— Simple
Typst > Quarto > BonitoBook > Pluto

2 Likes