Skip to content

Resource path resolution broken in Typst format extension #13917

@mcanouil

Description

@mcanouil

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

Path resolution of resources for Typst format is broken.

Reproducible example: https://github.com/mcanouil/quarto-issues-experiments/tree/main/quarto-cli-13917

git clone --filter=blob:none --sparse https://github.com/mcanouil/quarto-issues-experiments.git
cd quarto-issues-experiments
git sparse-checkout set quarto-cli-13917
.
├── _extensions
│   └── issue
│       ├── _extension.yml
│       └── quarto-icon.svg
├── _quarto.yml
└── sub
    ├── template_files
    │   └── mediabag
    ├── template.qmd
    └── template.typ

5 directories, 5 files
cd quarto-cli-13917/
quarto render sub/template.qmd
pandoc 
  to: typst
  output-file: template.typ
  standalone: true
  shift-heading-level-by: -1
  default-image-extension: svg
  wrap: none
  citeproc: false
  variables: {}
  
metadata
  logo: ../_extensions/issue/quarto-icon.svg
  title: Untitled
  
[typst]: Compiling template.typ to template.pdf...error: failed to load file (access denied)
    ┌─ sub/template.typ:287:63
    │
287 │ #set page(background: align(left+top, box(inset: 0.75in, image("../../_extensions/issue/quarto-icon.svg", width: 1.5in))))
    │                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    │
    = hint: cannot read file outside of project root
    = hint: you can adjust the project root with the --root argument

Unless the Quarto document lives next to _quarto.yml, paths get resolved incorrectly.

This makes the use of custom Typst formats inside projects almost impossible.

When template.qmd is at the root of the project:

quarto render template.qmd
pandoc 
  to: typst
  output-file: template.typ
  standalone: true
  shift-heading-level-by: -1
  default-image-extension: svg
  wrap: none
  citeproc: false
  variables: {}
  
metadata
  logo: _extensions/issue/quarto-icon.svg
  title: Untitled
  
[typst]: Compiling template.typ to template.pdf...DONE

Output created: template.pdf

The Typst intermediate file:

#set page(background: align(left+top, box(inset: 0.75in, image("_extensions/issue/quarto-icon.svg", width: 1.5in))))

Related discussions:

Possibly related if not the same issue as:

Quarto check output

Quarto 99.9.9
[✓] Checking environment information...
      Quarto cache location: /Users/mcanouil/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.8.3: OK
      Dart Sass version 1.87.0: OK
      Deno version 2.4.5: OK
      Typst version 0.14.2: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 99.9.9
      commit: 5e05270460a1830ef38031b6a93c1a0432933ac4
      Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/package/dist/bin

[✓] Checking tools....................OK
      TinyTeX: v2026.01
      Chromium: (not installed)

[✓] Checking LaTeX....................OK
      Using: TinyTex
      Path: /Users/mcanouil/Library/TinyTeX/bin/universal-darwin
      Version: 2025

[✓] Checking Chrome Headless....................OK
      Using: Chrome found on system
      Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser
      Source: QUARTO_CHROMIUM

[✓] Checking basic markdown render....OK

(/) Checking R installation...........ℹ R version 4.5.2 (2025-10-31)
! Config '~/.Rprofile' was loaded!
[✓] Checking R installation...........OK
      Version: 4.5.2
      Path: /Library/Frameworks/R.framework/Resources
      LibPaths:
        - /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library
      knitr: 1.50
      rmarkdown: 2.30

[✓] Checking Knitr engine render......OK

[✓] Checking Python 3 installation....OK
      Version: 3.14.2
      Path: /opt/homebrew/opt/python@3.14/bin/python3.14
      Jupyter: (None)

      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter

[✓] Checking Julia installation...

Metadata

Metadata

Labels

bugSomething isn't workingextensionsrelates to Quarto extensions mechanismtriaged-toIssues that were not self-assigned, signals that an issue was assigned to someone.typst

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions