# "What's in your Julia and Quarto?"

**URL:** <https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254>\
**Category:** VS Code\
**Tags:** quarto\
**Created:** [December 5, 2022, 10:25am UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254 "2022-12-05T10:25:08Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![pat-alt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pat-alt/32/34264_2.png) [@pat-alt](https://discourse.julialang.org/u/pat-alt)\
**Post date:** [December 5, 2022, 10:25am UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/1 "2022-12-05T10:25:08Z")

</div>

Some of us are using Quarto with Julia, so I thought it would be nice to have a permanent thread on this topic taking inspiration from [What is in your startup.jl?](https://discourse.julialang.org/t/what-is-in-your-startup-jl/18228) by @oxinabox. It would be great to hear about everyone’s experiences. In my own experience things generally already work quite smoothly, but sometimes I’ve hit road blocks, while other times I’ve managed to do cool things. Sharing this with others seems helpful, so let’s try to use this thread to help each other.

I’ll start of with a couple of resources,

- J.J Allaire’s [talk](https://www.youtube.com/watch?v=Y1uKNO32H_I) at JuliaCon 2022
- Quarto’s own [guide](https://quarto.org/docs/computations/julia.html)

and some of my own experiences:

- “A year of using Quarto with Julia” on my [blog](https://www.paltmeyer.com/blog/posts/tips-and-tricks-for-using-quarto-with-julia/) or on [Forem](https://forem.julialang.org/patalt/a-year-of-using-quarto-with-julia-3jbi)

---

<div class="post-metadata">

**Author:** ![benz0li](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/benz0li/32/37040_2.png) [@benz0li](https://discourse.julialang.org/u/benz0li)\
**Post date:** [December 5, 2022, 11:18am UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/2 "2022-12-05T11:18:25Z")

</div>

Check out [registry.gitlab.b-data.ch/jupyterlab/julia/pubtools](https://gitlab.b-data.ch/jupyterlab/julia/pubtools/container_registry).  
👉 pubtools = base + [TinyTeX](https://yihui.org/tinytex/) + Pandoc + [Quarto](https://quarto.org)

ℹ Quarto is currently only available for `amd64` architecture.

* * *

You may test it at [https://demo.jupyter.b-data.ch/](https://demo.jupyter.b-data.ch/).  
→ Resources are limited to 2 cores and 8 GB RAM.

I am happy to receive feedback.

* * *

Cross references:

- [JupyterLab + code-server + Julia](https://discourse.julialang.org/t/jupyterlab-code-server-julia/82808)
- [GitHub - b-data/jupyterlab-julia-docker-stack: Multi-arch (linux/amd64, linux/arm64/v8) docker images. Please submit Pull Requests to the GitLab repository.](https://github.com/b-data/jupyterlab-julia-docker-stack)

---

<div class="post-metadata">

**Author:** ![benz0li](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/benz0li/32/37040_2.png) [@benz0li](https://discourse.julialang.org/u/benz0li)\
**Post date:** [December 5, 2022, 11:29am UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/3 "2022-12-05T11:29:34Z")

</div>

Yes, it is already working quite smoothly.

Handling of plot output formats could be improved, though. See

- [[FR] Provide multiple output formats to IJulia · Issue #4288 · JuliaPlots/Plots.jl · GitHub](https://github.com/JuliaPlots/Plots.jl/issues/4288)
- [Feature request: Provide multiple output formats to IJulia · Issue #2195 · MakieOrg/Makie.jl · GitHub](https://github.com/MakieOrg/Makie.jl/issues/2195)

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [December 5, 2022, 4:40pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/4 "2022-12-05T16:40:34Z")

</div>

A few things I learned while taking Quarto for a test drive:

To get Luxor’s SVG output drawn on the page, use `display()`. (In Pluto.jl it will be displayed automatically.) If you don’t, you’ll get the odd error message: `ERROR: TypeError: Cannot read properties of undefined (reading 'startsWith')`.

To have the code hidden in a collapsed ‘details’ block, use `#| code-fold: true` inside the code cell.

 ![Screenshot 2022-12-05 at 16.33.06](https://global.discourse-cdn.com/julialang/original/3X/2/f/2fc4bb9d255d5ef220c1b77d1103ad858e339865.jpeg)

````plaintext

```{julia}
#| fig-cap: "Drawing of an epitrochoid marked with circles"
#| fig-alt: "An epitrochoid drawn with circles"
#| code-fold: true
#| code-summary: "Show the code"
using Luxor, Colors
d = Drawing(800, 500, :svg)
origin()
rotate(π/2)
p = epitrochoid(120, 12, 58, vertices=true)
L = 300
ps = polysample(p, L)
for (n, pt) in enumerate(ps)
    sethue(HSB(rescale(n, 1, L, 0, 360), 0.7, 0.6))
    circle(pt, 20sin(rescale(n, 1, L, 0, π)), :fillpreserve)
    sethue("black")
    strokepath()
end
finish()
display(d)

````

To choose fonts, it seems to work if you add them to the css style files and to the `.yaml` files.

`yaml`:

```yaml
format:
  html:
    theme: 
         light: flatly
         dark: cyborg
    monofont: JuliaMono-Light
    mainfont: Merriweather
    css: styles.css
    toc: true

```

`css`:

```css
@font-face {
    font-family: JuliaMono-Light;
    src:
        local('JuliaMono-Light'),
        url("https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Light.woff2");
}

@font-face {
    font-family: Merriweather;
    src:
        local('Merriweather'),
        url("https: //cdn.jsdelivr.net/npm/@fontsource/merriweather@4.5.14/files/merriweather-latin-700-normal.woff2");
}

* {
    font-variant-numeric: oldstyle-nums;
}

```

---

<div class="post-metadata">

**Author:** ![benz0li](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/benz0li/32/37040_2.png) [@benz0li](https://discourse.julialang.org/u/benz0li)\
**Post date:** [May 30, 2023, 9:11am UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/5 "2023-05-30T09:11:59Z")

</div>

The [JupyterLab Julia pubtools](https://gitlab.b-data.ch/jupyterlab/julia/pubtools/container_registry) image now also provides Quarto for `arm64`.

👉 See the [Version Matrix](https://github.com/b-data/jupyterlab-julia-docker-stack/blob/main/VERSION_MATRIX.md) for detailed information.

---

<div class="post-metadata">

**Author:** ![bkostadi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkostadi/32/202461_2.png) [@bkostadi](https://discourse.julialang.org/u/bkostadi)\
**Post date:** [October 13, 2023, 7:34pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/6 "2023-10-13T19:34:38Z")

</div>

That’s a great observation! I was looking for a way to render the Luxor turtles in Quarto and using the display function works with the turtles too when I display the drawing canvas 🙂

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [November 28, 2023, 10:53pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/7 "2023-11-28T22:53:11Z")

</div>

Still no good solution for cross-references working across .qmd files? Without this Quarto seems of very little usage to document packages with function docs in their own files.

---

<div class="post-metadata">

**Author:** ![rdavis120](https://avatars.discourse-cdn.com/v4/letter/r/b5a626/32.png) [@rdavis120](https://discourse.julialang.org/u/rdavis120)\
**Post date:** [November 29, 2023, 1:13pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/8 "2023-11-29T13:13:03Z")

</div>

You can create cross references to sections in other files, just add the path to the reference. It’s documented [here](https://quarto.org/docs/books/book-crossrefs.html#hyperlinks)

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [November 29, 2023, 3:58pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/9 "2023-11-29T15:58:22Z")

</div>

I have found that too, but it’s an extremely painful option when we have many .qmd files to cross-reference because at every-time we must need to know the file name containing whatever we want to reference. This is something that should be Quarto’s responsibility and not push it to the users.

---

<div class="post-metadata">

**Author:** ![rdavis120](https://avatars.discourse-cdn.com/v4/letter/r/b5a626/32.png) [@rdavis120](https://discourse.julialang.org/u/rdavis120)\
**Post date:** [November 29, 2023, 4:09pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/10 "2023-11-29T16:09:23Z")

</div>

I’m not sure how to would know where to make the link. If you want to look at an example look at ibis [https://ibis-project.org](https://ibis-project.org) on their [GitHub](https://github.com/ibis-project/ibis/tree/master/docs) repo.

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [November 29, 2023, 7:07pm UTC](https://discourse.julialang.org/t/whats-in-your-julia-and-quarto/91254/11 "2023-11-29T19:07:20Z")

</div>

Thanks. I think I learned how to do it but it doesn’t change the pain. Specially if one do the links from files in different directories as the the link must contain the relative path to file when the two files (the one where the link is made and the one with the target) are not in the same directory. And when has over an hundred of those …
