DecoratedCodeBlock has no docx/pptx renderer — code chunk `filename` header silently dropped
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
Direzione di ricerca
Start with src/resources/filters/customnodes/decoratedcodeblock.lua and compare the existing HTML and LaTeX renderers with the fallback path. Render the provided repro with --to docx and --to pptx, then verify that a visible filename representation appears before the code block while HTML and LaTeX behavior remains unchanged.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
A code block decorated with a filename (e.g. {r filename="hello.R"} or a .filename attribute) renders correctly in HTML, LaTeX, and Markdown output, but the filename header is silently dropped for docx and pptx (and any other format with no dedicated renderer registered).
Where the gap is
src/resources/filters/customnodes/decoratedcodeblock.lua registers exactly four renderers for the DecoratedCodeBlock custom AST node:
- A default/fallback renderer (predicate always
true) — walks the code block for folding only:_quarto.ast.add_renderer("DecoratedCodeBlock", function(_) return true end, function(node) return _quarto.ast.walk(node.code_block, { CodeBlock = render_folded_block }) end) - A markdown renderer (
_quarto.format.isMarkdownOutput()) - A latex renderer (
_quarto.format.isLatexOutput()) - An html renderer (
_quarto.format.isHtmlOutput())
Only the html and latex renderers actually read node.filename and render a header for it. Since docx/pptx match none of the three specific predicates, they fall through to the default renderer, which never reads node.filename (or node.caption) at all — it only walks for render_folded_block (itself a no-op for non-HTML output). The result: the code block content survives, but the filename header silently disappears, with no warning.
Repro
---
title: repro
---
```{.python filename="hello.py"}
print("hello")
Render with `quarto render repro.qmd --to docx` (or `--to pptx`). The code block appears; the "hello.py" filename header does not. Compare with `--to html` or `--to latex`, both of which show it.
## Suggested fix
Add a docx/pptx-aware renderer for `DecoratedCodeBlock` (or extend the default renderer to check `_quarto.format.isDocxOutput()`/`isPowerPointOutput()`) that emits *some* visible representation of `node.filename` — e.g. a bold paragraph immediately before the code block, mirroring the semantic intent of the html wrapper (`code-with-filename`) and the latex `\caption`, adapted to what Pandoc's docx/pptx writers can represent natively (Word/PowerPoint have no custom CSS to hook into, so this would need to be a plain paragraph/text run rather than a styled wrapper).
## Context
Found while auditing `decoratedcodeblock.lua`'s renderer coverage against Pandoc's non-core output targets (docx/pptx) for a project that reuses these filters. Confirmed against a fresh clone at `v1.11.3` (and current `main`, `83d48d8e8` — the file is unchanged between the two).
- Lingua principale
- JavaScript
- Stelle
- 6.1k
- Fork
- 463
- Merge medio
- 21h 14m
- PR unite (30g)
- 60
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di quarto-dev/quarto-cli
-
bug callouts regression revealjs
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
quarto-dev/quarto-cli#15014 ·
I maintainer di solito rispondono entro 1 giorno
-
Website navbar hides the notebook preview headerForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaaccessibility bug embed websites
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
quarto-dev/quarto-cli#14972 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
accessibility documentation revealjs
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
quarto-dev/quarto-cli#14971 ·
I maintainer di solito rispondono entro 1 giorno
-
accessibility revealjs
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
quarto-dev/quarto-cli#14970 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
a11y: notebook preview header is outside any landmarkForse già presa @cderv l’ha presa 2 giorni fa. Apertaaccessibility embed
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
quarto-dev/quarto-cli#14968 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di quarto-dev/quarto-cli
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
dusk-network/exu#17 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
jspreadsheet/ce#1809 ·
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
githubnext/gh-aw-workshop#4458 ·
I maintainer di solito rispondono entro 1 giorno
-
Add: CartoonitoApertacheck:failed feeds:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
iptv-org/database#37390 · 1 commento ·
I maintainer di solito rispondono entro 9 giorni
-
bug: directory index route root priority is overwritten when wildcard is falseForse già presa @TalhaHunter101 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
fastify/fastify-static#617 ·