Skip to content

MD079 - Quarto chunk labels must not contain whitespace

Aliases: chunk-label-spaces

Flavor: Quarto only. No-op for every other flavor.

What this rule does

Flags Quarto/RMarkdown chunk labels that contain whitespace. Whitespace silently breaks Quarto cross-references (@fig-foo) and produces unstable HTML anchors.

Three sources are checked:

  • Implicit positional: multiple bare words before any key=value are parsed by knitr/Quarto as one space-separated label.
  • Quoted value: explicit label="my label" with interior whitespace.
  • Hashpipe option: #| label: my label inside the block body.

Why this matters

knitr's chunk parser is permissive: ```{r several words} is accepted as a chunk with the label "several words". Downstream, @fig-several-words will not resolve, and the rendered HTML anchor depends on how the engine collapses the spaces - which differs between Quarto versions.

Examples

Correct

```{r setup}
plot(1:10)
plot(1:10)

#| label: fig-plot
plot(1:10)
### Incorrect

```markdown
```{r several words}
plot(1:10)

plot(1:10)

#| label: my label
plot(1:10)
```

Automatic fixes

None. Choosing a replacement (hyphenate, underscore, or collapse) is a semantic decision the rule will not make on the author's behalf.