revealjs removes the `href` from code line-number links
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 84/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
src/format/reveal/format-reveal.ts のリンクされた行番号の処理から始め、次に src/core/html.ts の fixEmptyHrefs と src/command/render/pandoc.ts のウェブサイトパスを確認します。提供された deck.qmd と axe コマンドで再現します。完了条件は、revealjs が行番号の href="#cb1-1" を保持し、クリックがスライド上に留まり、axe がどちらのプロジェクト種別でも行番号に関する違反を報告しないことです。
索引モデルが issue の本文から書いたものです。
説明
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
For revealjs, Quarto removes the href from each code line-number link (format-reveal.ts). The comment says these links "can't work because ids are used for sections". That is no longer true. Since reveal.js 5, links to element ids work (f8e3406, hakimel/reveal.js#3444).
Removing the href now causes two bugs:
- Single file:
fixEmptyHrefs(html.ts) setshref="". A click on a line number, or Enter on it, goes to the title slide. - Website project:
fixEmptyHrefsis skipped (pandoc.ts), so the anchor has nohref. Thearia-labelfrom #14662 is then on an<a>that is not a link. axe reportsaria-prohibited-attr(WCAG 4.1.2).
If the href is kept, revealjs gets the same markup as format: html: <a href="#cb1-1" aria-label="1">. I tested this by putting the href back in the rendered output. A click or Enter stays on the slide, stepped code-line-numbers highlights are not changed, and axe reports no line-number problems in either project type.
We found this with an axe scan of quarto.org: 87 instances on 7 revealjs pages, for example the revealjs demo.
Investigation was AI-assisted and grounded in a local clone of quarto-cli, per CONTRIBUTING.md's note on using AI tools.
Steps to reproduce
deck.qmd:
---
title: Deck
format: revealjs
---
## Code
```python
x = 1
y = 2
```
- Run
quarto render deck.qmd. Opendeck.html, go to the "Code" slide, and click a line number. - Put
deck.qmdin a website project (project: type: website, plus anindex.qmd). Runquarto render, thenquarto call axe _site --pages deck.html.
Actual behavior
- Single file: the line anchor is
<a href="" aria-label="1"></a>. The click goes to the title slide. - Website: the line anchor is
<a aria-label="1"></a>. axe reportsaria-prohibited-attron each line anchor.
Expected behavior
Line numbers are links to their line, as in format: html: <a href="#cb1-1" aria-label="1"></a>. A click stays on the slide, and axe reports no violation.
Your environment
- IDE: Positron 2026.10.0 (build 54)
- OS: macOS 26.6.2 (build 25G83)
Quarto check output
Quarto 1.11.4
[✓] Checking environment information...
Quarto cache location: /Users/charlottewickham/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.10.0: OK
Dart Sass version 1.101.0: OK
Deno version 2.7.14: OK
Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 1.11.4
Path: /Applications/quarto/bin
[✓] Checking tools....................OK
TinyTeX: v2026.04
Chrome Headless Shell: 150.0.7871.115
VeraPDF: 1.28.2
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/charlottewickham/Library/TinyTeX/bin/universal-darwin
Version: 2026
[✓] Checking Chrome Headless....................OK
Using: Chrome Headless Shell installed by Quarto
Path: /Users/charlottewickham/Library/Application Support/quarto/chrome-headless-shell/chrome-headless-shell-mac-arm64/chrome-headless-shell
Version: 150.0.7871.115
[✓] Checking basic markdown render....OK
[✓] Checking R installation...........OK
Version: 4.6.0
Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
LibPaths:
- /Users/charlottewickham/Library/R/arm64/4.6/library
- /Library/Frameworks/R.framework/Versions/4.6/Resources/library
knitr: 1.51
rmarkdown: 2.31
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.12.2
Path: /Users/charlottewickham/.pyenv/versions/3.12.2/bin/python3
Jupyter: 5.9.1
Kernels: python3
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
- 主要言語
- JavaScript
- スター
- 6k
- フォーク
- 461
- 平均マージ
- 13時間 37分
- マージ済み PR(30日)
- 53
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
quarto-dev/quarto-cli のほかの issue
-
accessibility documentation
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
quarto-dev/quarto-cli#14944 ·
メンテナーはふだん 1 日以内に返信
-
maintenance ojs-engine
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
quarto-dev/quarto-cli#14934 ·
メンテナーはふだん 1 日以内に返信
-
accessibility bug html themes
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
quarto-dev/quarto-cli#14932 ·
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
quarto-dev/quarto-cli#14915 ·
メンテナーはふだん 1 日以内に返信
-
binder bug
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
quarto-dev/quarto-cli#14907 · コメント 3 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
quarto-dev/quarto-cli の issue をすべて見る
似ている issue
-
refactor
難易度 2/5 半日 初心者へのやさしさ 84/100
メンテナーはふだん 5 日以内に返信
-
translation
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
ciderapp/translations#87 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
メンテナーはふだん 1 日以内に返信
-
component: split-view platform: windows
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
zen-browser/desktop#15616 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信