quarto-dev / quarto-dev/quarto-cli

Lightbox cell option ignored when using Jupyter engine

Open
#14,432 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug engines-jupyter lightbox
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

Bug description

When a .qmd/.ipynb document uses engine: jupyter, the lightbox.group cell option set via #| YAML comments is silently ignored (passed on to "metadata" in Jupyter notebook).
Each figure ends up in its own auto-generated gallery instead of the shared gallery specified by group.
The same option works correctly with the knitr engine.

This was reported in Discussion #14392.

Steps to reproduce

---
title: "Lightbox Example"
format:
  html:
    lightbox:
      match: auto
engine: jupyter
---

## First plot

```{python}
#| label: fig-sine
#| fig-cap: "Sine plot"
#| lightbox:
#|   group: figs

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
plt.figure()
plt.plot(x, np.sin(x))
plt.title("Sine")
plt.show()
```

## Second plot

```{python}
#| label: fig-cosine
#| fig-cap: "Cosine plot"
#| lightbox:
#|   group: figs

plt.figure()
plt.plot(x, np.cos(x))
plt.title("Cosine")
plt.show()
```

Actual behaviour

Clicking either figure opens the lightbox, but no gallery navigation arrows appear — each image is in its own isolated gallery.
The rendered <a> elements have data-gallery set to auto-generated values (quarto-lightbox-gallery-1, quarto-lightbox-gallery-2) rather than figs.

Expected behaviour

Both figures should be in the same gallery (data-gallery="figs"), so the lightbox shows navigation arrows that cycle between the two plots.

Your environment

  • OS: macOS 25.3.0

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: 2355f229b2764eae02b1f9916ac6e208d0909d02
      Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/package/dist/bin

[✓] Checking tools....................OK
      TinyTeX: v2026.02
      Chrome Headless Shell: (not installed)
      VeraPDF: (not installed)

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

[✓] Checking Chrome Headless....................OK
      Using: Chrome from QUARTO_CHROMIUM
      Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser

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

(/) Checking R installation...........ℹ R version 4.5.3 (2026-03-11)
! Config '~/.Rprofile' was loaded!
[✓] Checking R installation...........OK
      Version: 4.5.3
      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.4
      Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/tests/.venv/bin/python3
      Jupyter: 5.9.1
      Kernels: quarto-brand, uv, julia-1.12, python3

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

[✓] Checking Julia installation...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how the Jupyter engine transfers #| cell options into rendered figure metadata, then compare that path with the working knitr engine. Reproduce the example and verify that both generated elements use data-gallery="figs" and show shared navigation.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, jupyter, python
Domain
frontend, web-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.