Skip to content

output-ext setting produces incorrect links #13111

@srvanderplas

Description

@srvanderplas

I have:

  • searched the issue tracker for similar issues
  • installed the latest version of Quarto CLI
  • formatted my issue following the Bug Reports guide

Bug description

I have a quarto website for a workshop that includes a main webpage
and a folder of slides:

  • root
    • index.qmd
    • _quarto.yml
    • slides
      • 01.qmd
      • _metadata.yml

I like having the revealjs slides as well as a one-page HTML document that students can use to follow along without having to page through the slides one-by-one.

I finally found the output-ext rendering option so that all of the qmd files in the slides folder would be built as slides with .rjs.html extension and as HTML webpages with .onepage.html as an extension. I set this up in a directory metadata file so that I didn't have to mess with specifying that in every file.

I then link to the quarto file in the navbar:

  navbar:
    left:
      - href: index.html
        text: Home
      - href: slides/01.qmd
        text: Slides

When navigate: true is enabled in the project options, this becomes
even more irritating, since a window pops up and gives you a 404 or
a missing resource warning.

Steps to reproduce

I've created a reprex here: https://github.com/srvanderplas/reprex-quarto-reveal-site

Steps:

  • Create a quarto website project
  • Add a slide directory
  • Create a quarto presentation
  • In the slide directory, create a _metadata.yml file that specifies an output extension for HTML and a separate output extension for RevealJS
  • Link to the presentation using the qmd file

Actual behavior

The problem is that the automatically generated links don't quite work. You can see in the built page that the Slides link in the navbar goes to https://srvanderplas.github.io/reprex-quarto-reveal-site/slides/01.onepage.html.onepage.html
-- that is, the extension is put on twice.

Expected behavior

It should instead link to this page or the slides.

Ideally, the user could specify which file format is the default one, so that linking to the qmd file produces the desired result.

It would also be nice to be able to specify a stub at the end of the file, rather than just an extension (extra dots in filenames drive me nuts).

Desired outcome(s):

  • Link to /slides/01.onepage.html or /slides/01.rjs.html
  • Allow the user to specify which format to prefer when linking to qmd files, preferably as a directory level option
  • Provide a output-stub option instead or in addition to output-ext to differentiate reveal files from regular HTML files without messing with proper file conventions, where the first . in the file name is a delimiter between the name and the extension.

Your environment

  • IDE: RStudio 2025.05.1 Build 513
  • quarto version: 1.7.31
  • OS: MX Linux (Debian 6.1.38-2 (2023-07-27) x86_64 GNU/Linux)
  • Session info:
> sessionInfo()
R version 4.5.1 (2025-06-13)
Platform: x86_64-pc-linux-gnu
Running under: Debian GNU/Linux 12 (bookworm)

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.21.so;  LAPACK version 3.11.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Chicago
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods  
[7] base     

loaded via a namespace (and not attached):
[1] compiler_4.5.1 tools_4.5.1    yaml_2.3.10    renv_1.1.4 

renv.txt

Quarto check output

quarto-check.txt

Quarto 1.7.31

[✓] Checking environment information...
Quarto cache location: ~/.cache/quarto

[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.6.3: OK
Dart Sass version 1.85.1: OK
Deno version 1.46.3: OK
Typst version 0.13.0: OK

[✓] Checking versions of quarto dependencies......OK

[✓] Checking Quarto installation......OK
Version: 1.7.31
Path: /opt/quarto/bin

�[2K�[G
[✓] Checking tools....................OK
TinyTeX: (external install)
Chromium: (not installed)

(|) Checking LaTeX....................
(/) Checking LaTeX....................�[2K�[G
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: ~/.TinyTeX/bin/x86_64-linux
Version: 2025

�[2K�[G
[✓] Checking Chrome Headless....................OK
Chrome: (not detected)

(|) Checking basic markdown render....
(/) Checking basic markdown render....
(-) Checking basic markdown render....
() Checking basic markdown render....
(|) Checking basic markdown render....
(/) Checking basic markdown render....
(-) Checking basic markdown render....�[2K�[G
[✓] Checking basic markdown render....OK

�[2K�[G
[✓] Checking Python 3 installation....OK
Version: 3.11.4 (Conda)
Path: ~/.miniconda3/bin/python
Jupyter: 5.8.1
Kernels: python3

(|) Checking Jupyter engine render....
(/) Checking Jupyter engine render....
(-) Checking Jupyter engine render....
() Checking Jupyter engine render....
(|) Checking Jupyter engine render....
(/) Checking Jupyter engine render....
(-) Checking Jupyter engine render....
() Checking Jupyter engine render....
(|) Checking Jupyter engine render....
(/) Checking Jupyter engine render....
(-) Checking Jupyter engine render....
() Checking Jupyter engine render....
(|) Checking Jupyter engine render....
(/) Checking Jupyter engine render....
(-) Checking Jupyter engine render....
() Checking Jupyter engine render....
(|) Checking Jupyter engine render....
(/) Checking Jupyter engine render....
(-) Checking Jupyter engine render....�[2K�[G
[✓] Checking Jupyter engine render....OK

(|) Checking R installation...........
(/) Checking R installation...........
(-) Checking R installation...........
() Checking R installation...........
(|) Checking R installation...........
(/) Checking R installation...........
(-) Checking R installation...........
() Checking R installation...........�[2K�[G
[✓] Checking R installation...........OK
Version: 4.5.1
Path: /usr/lib/R
LibPaths:
- ~/Projects/repro-extension-issue/renv/library/linux-debian-bookworm/R-4.5/x86_64-pc-linux-gnu
- ~/.cache/R/renv/sandbox/linux-debian-bookworm/R-4.5/x86_64-pc-linux-gnu/9a444a72
knitr: 1.50
rmarkdown: 2.29

(|) Checking Knitr engine render......
(/) Checking Knitr engine render......
(-) Checking Knitr engine render......

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions