<!--
  canonical-url: https://www.avonture.be/blog/quarto-extensions
  published:     2025-05-03
  This is a static plain-Markdown mirror generated at build time.
  Visit the canonical URL above for the fully rendered page, with images and interactive components.
-->

# My favorite Quarto extensions

> My favorite Quarto extensions - Learn about essential Quarto filters for partial content templating, Font Awesome icons, including external code files, and simple search-replace macros to enhance your documentation workflow.

---
![My favorite Quarto extensions](/img/v2/quarto.webp)

**TL;DR**

This article shares a curated list of the author's favorite Quarto extensions to enhance your documentation workflow. Discover useful filters for templating content with `quarto-partials`, embedding icons with `fontawesome`, including external code snippets, creating simple text-replacement macros with `search-replace`, and improving code block visibility in reveal.js presentations with `code-fullscreen`.

I've been using Quarto for 18 months now to generate my documentation: I'm writing Markdown files (`.md`) and converting them to a Word document, PDF, static HTML site or [a revealjs slideshow](/blog/quarto-revealjs-tips). *If Quarto is new to you, [Running Quarto Markdown in Docker](/blog/docker-quarto) gets you a working setup in minutes.*

Quarto is supporting external extensions (also called `plugins` elsewhere).

Below a list of a few I'm using.

## gadenbuie/quarto-partials

See <https://github.com/gadenbuie/quarto-partials/tree/main>

When I come to this extension, my need was: I've coded more than 60 functionalities and I need to document them. Each will have the same look\&feel like a *Description* chapter, a *How to run?*, *How to configure?*, *Remarks* and so on.

Sometimes the text will be exactly the same (like a generic text) and, in some cases, almost the same: the *How to configure?* chapter will have the same sentences except I've to replace some placeholders (like the name of the feature, the name of the configuration file, ...)

In other terms: I need to be able to write some *page template* and *inject* specific content to it.  I wish that my 60 functionalities pages look the same and if I need to change one global text, I have to do it in a central place.

[Partial content](https://github.com/gadenbuie/quarto-partials/tree/main) is perfect here. Based on their documentation, it's similar to [Mustache](https://mustache.github.io/).

### Example

Let's create a file called `_hello.md` with this content:

**\_hello.md**

```markdown
Hello, {{ name }}!
```

Then, in any file, we can do:

**test.md**

```markdown
{{< partial _hello.md name="John" >}}
```

Make sure to add lines below in your YAML front matter:

**test.md**

```markdown
filters:
   - quarto-partials
```

We can pass variables like here above but, more powerful, we can declare a `partial-data` key in our YAML frontmatter.

If you want to go much further with this extension (conditional blocks, raw content, a real-world documentation use case), I've written a dedicated deep dive: [Using Mustache templating with Quarto](/blog/quarto-mustache).

## quarto-ext/fontawesome

See <https://github.com/quarto-ext/fontawesome>

Use Font Awesome icons in HTML and PDF documents.

For instance, if you want a GitHub icon, you just need to put the `{{< fa brands github size=5x >}}` code in your file. Quite easy.

Make sure to add lines below in your YAML front matter:

**test.md**

```markdown
filters:
   - fontawesome
```

## quarto-ext/include-code-files

> **Is this still needed?:**
>
> Not sure this addon is still needed: in one of my documentation, I've used it like this:
>
> ````markdown
> ```{.yaml include="files/.gitlab-ci.yml"}
> ```
> ````
>
> It was working as expecting but during the generation of a `.docx` file (MS Word), the included file was missing.
>
> I've then use the native shortcode like below and, now, it works both for `.html` and `.docx`.
>
> ````markdown
> ```yaml
> {{< include files/.gitlab-ci.yml >}}
> ```
> ````

See <https://github.com/quarto-ext/include-code-files>

The objective is to be able to include external file by using the syntax below:

````markdown
```{.bash include="documentation/chapter_1/install.sh"}
```
````

Make sure to add lines below in your YAML front matter:

**test.md**

```markdown
filters:
   - include-code-files
```

## quarto-ext/search-replace

See <https://github.com/ute/search-replace>

Quarto filter extension for simple search-replace macros.

This extension allows you to search and replace when rendering documents. For instance, by putting the `+quarto` code in the frontmatter of the article or, better, in the `_quarto.yaml` global file, we can just write `+quarto` (a constant) in our document and let the replace action be done during the rendering of the documentation.

**\_quarto.yaml**

```yaml
search-replace:
  +quarto: "[Quarto](https://quarto.org)"
```

Make sure to add lines below in your YAML front matter:

```yaml
filters:
   - search-replace
```

### Example

Below how to use it. It's simple; just write the name of your constant and during the rendering of your document, the constant will be replaced by the predefined value. Easy!

```markdown
I'm using +quarto and I love it
```

## shafayetShafee/code-fullscreen

See <https://github.com/shafayetShafee/code-fullscreen>

This extension is for revealjs slideshow.

If you have a very long block of code, revealjs will not display all lines and thus, the code will be truncated (like only the first 25 lines will be displayed).

By adding the filter below to your YAML frontmatter, a small *Full screen* button will be displayed at the top right of the block code.

**test.md**

```markdown
filters:
   - code-fullscreen
```
