Equivalent of https://bookdown.org/ in Julia?

The bookdown R package provides a convenient workflow for writing technical documents/books. It also supports Julia in the markup files.

Is there an equivalent workflow in Julia?

4 Likes

This environment looks really powerful. Thanks for bringing it up, I was not aware of it (being blissfully ignorant of things “R”). I learned something here.

1 Like

Could Literate be the answer to this? (@fredrikekre)

1 Like

Looks like Documenter?

Bookdown is great, since it has great citations, cross referencing, and sensible defaults.

You can run a julia environment in bookdown. Other than the annoyig knitr syntax for figure titling and placement, I don’t think you will need to use that much R.

2 Likes

Can confirm: https://bookdown.org/yihui/rmarkdown/language-engines.html#julia

2 Likes

Weave can be used for something like this. It supports Pandoc, so you have lots of options for output format.

http://weavejl.mpastell.com/stable/

I found your post while searching for something like this for myself.

Not sure if your needs are already met but you could try this recent package Books.jl. It also has an example BookTemplate to start off with.

1 Like

Also take a look at Quarto

7 Likes

I would also recommend Quarto since it’s already supporting many languages and Julia is one of them. It’s the next generation of rmarkdown. I use quarto with Julia, Python and R.

Quarto looks cool - I hadn’t heard about it before but I’ll have to check it out. I wonder if they plan to eventually support any language with a Jupyter kernel.

I had been using Emacs + Org mode + Emacs Jupyter for this sort of thing. Great support for LaTeX and code evaluation is done using Jupyter so you can write and evaluate Julia blocks (or any language with a Jupyter kernel, even mixed and matched in a single document). Org mode can also evaluate Julia blocks using its own system (called org-babel), but I haven’t gotten that to work yet. It’s not Markdown syntax, though org syntax is also good.

The downside is that it’s all Emacs based, so that may not be preferable. It has worked alright for me.

Org mode: https://orgmode.org/
Emacs Jupyter: GitHub - nnicandro/emacs-jupyter: An interface to communicate with Jupyter kernels.

Jupyter Book is a Jupyter-specific option for creating online books:

https://jupyterbook.org/en/stable/intro.html

As the name implies, it’s designed to work seamlessly with Jupyter notebooks. It also has great LaTeX support and quite a few other features.

You can use any Jupyter kernel you want with Quarto. It’s just that some features require specific support in the kernel configuration or setup script, which won’t be implemented for languages that are not officially supported. For example, in the Quarto YAML you can set the default figure size with fig-width and fig-height. If you use a non-supported language (or a supported language with a non-supported plotting library) these settings will have no effect.

This unfortunately doesn’t work yet. I’ve filed related issues here and here.