Skip to content
Back to skills

2543 Conditional Content 3c229e8a

ASecurity

Quarto allows content to be shown or hidden based on output format, metadata, or profiles.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentjavascriptpythonjavabashgit

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2543-conditional-content_3c229e8a --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2543 Conditional Content 3c229e8a?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2543 Conditional Content 3c229e8a
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2543-conditional-content-3c229e8a/badge)](https://www.skillsdirectory.com/skills/tools-only-2543-conditional-content-3c229e8a)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Conditional Content

Quarto allows content to be shown or hidden based on output format, metadata, or profiles.

## Format-Based Conditions

### Content Visible

Show content only for specific formats:

````markdown
::: {.content-visible when-format="html"}
This only appears in HTML output.
:::
````

### Content Hidden

Hide content for specific formats:

````markdown
::: {.content-hidden when-format="pdf"}
This appears everywhere except PDF.
:::
````

### Unless Format

Show unless a specific format:

````markdown
::: {.content-visible unless-format="html"}
This appears in PDF, DOCX, etc., but not HTML.
:::
````

## Format Values

### Single Formats

| Format          | Value      |
| --------------- | ---------- |
| HTML            | `html`     |
| PDF             | `pdf`      |
| Word            | `docx`     |
| LaTeX           | `latex`    |
| RevealJS        | `revealjs` |
| Beamer          | `beamer`   |
| EPUB            | `epub`     |
| GitHub Markdown | `gfm`      |

### Format Aliases

Quarto groups related formats:

| Alias     | Includes                             |
| --------- | ------------------------------------ |
| `html`    | HTML, EPUB, RevealJS, Dashboard      |
| `pdf`     | PDF, LaTeX, Beamer                   |
| `html:js` | HTML formats with JavaScript support |

### Example with Aliases

````markdown
::: {.content-visible when-format="pdf"}
This appears in PDF, LaTeX, and Beamer.
:::
````

## Multiple Formats

### Either Format

````markdown
::: {.content-visible when-format="html"}
::: {.content-visible when-format="revealjs"}
This appears in HTML or RevealJS.
:::
:::
````

Or use aliases:

````markdown
::: {.content-visible when-format="html"}
Appears in all HTML-based formats.
:::
````

## Inline Conditions

For inline content, use spans:

````markdown
View the [interactive version]{.content-visible when-format="html"}
[figure]{.content-visible when-format="pdf"}.
````

## Metadata-Based Conditions

### When Meta

Show based on metadata values:

````markdown
::: {.content-visible when-meta="draft"}
DRAFT - Not for distribution.
:::
````

With YAML:

```yaml
draft: true
```

### Unless Meta

````markdown
::: {.content-visible unless-meta="draft"}
Final version content.
:::
````

### Nested Metadata

````markdown
::: {.content-visible when-meta="params.show-advanced"}
Advanced content here.
:::
````

YAML:

```yaml
params:
  show-advanced: true
```

## Profile-Based Conditions

### Define Profiles

In `_quarto.yml`:

```yaml
profile:
  default: production

  group:
    - [development, production]
```

### Profile-Specific Content

````markdown
::: {.content-visible when-profile="development"}
Debug information here.
:::

::: {.content-visible when-profile="production"}
Production content only.
:::
````

### Using Profiles

```bash
quarto render --profile development
```

## Conditional Code Blocks

### Format-Specific Code

````markdown
::: {.content-visible when-format="html"}

```{r}
# Interactive plot for HTML
plotly::plot_ly(data)
```

:::

::: {.content-visible when-format="pdf"}

```{r}
# Static plot for PDF
plot(data)
```

:::
````

### With QUARTO_EXECUTE_INFO

Quarto creates a JSON file with execution context information. Read it to conditionally execute code in any language.

#### R

````markdown
```{r}
quarto_info <- jsonlite::read_json(
  Sys.getenv("QUARTO_EXECUTE_INFO")
)
if (quarto_info$output$format == "html") {
  interactive_plot()
}
```
````

#### Python

````markdown
```{python}
import os
import json

with open(os.environ["QUARTO_EXECUTE_INFO"]) as f:
    quarto_info = json.load(f)

if quarto_info["output"]["format"] == "html":
    interactive_plot()
```
````

See [QUARTO_EXECUTE_INFO](https://quarto.org/docs/advanced/quarto-execute-info.html) for available fields.

## Conditional Includes

Include different files based on format:

````markdown
::: {.content-visible when-format="html"}

{{< include _interactive-content.qmd >}}

:::

::: {.content-visible when-format="pdf"}

{{< include _static-content.qmd >}}

:::
````

## Conditional YAML

Use conditional logic in YAML:

```yaml
format:
  html:
    include-in-header:
      - text: |
          <script src="interactive.js"></script>
  pdf:
    include-in-header:
      - text: |
          \usepackage{custom}
```

## Complex Conditions

### Combining Conditions

````markdown
::: {.content-visible when-format="html" when-meta="interactive"}
Interactive HTML content.
:::
````

Both conditions must be true.

### Nested Conditions

````markdown
::: {.content-visible when-format="html"}

::: {.content-visible when-meta="advanced"}
Advanced HTML content.
:::

Basic HTML content.

:::
````

## Resources

- [Quarto Conditional Content](https://quarto.org/docs/authoring/conditional.html)
- [Project Profiles](https://quarto.org/docs/projects/profiles.html)


Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.