Skip to content

Commit ebe1707

Browse files
cscheidclaude
andcommitted
docs(crossref): record bd-zecehtnc outcome — preview crossref semantics done
Investigation found the q2-preview React renderer already renders crossref custom nodes correctly (FloatRefTarget/CrossrefResolvedRef/Theorem/Proof/ Equation; 53 integration tests pass), and Part 2 additionally fixed preview's attribute-form figure crossref. nbsp link-text parity is already correct (byte-confirmed). Only visual revealjs auto-stretch parity remains, deferred to bd-hbloemff. bd-zecehtnc closed as semantics-done. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b9a60e7 commit ebe1707

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

claude-notes/plans/2026-06-18-revealjs-crossref.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,34 @@ with no new registration.
447447
unresolved placeholders.
448448
- [x] 1.6 Full `cargo nextest run -p quarto-core`**2386 passed**.
449449

450+
## Part 3 outcome — interactive-preview crossref (bd-zecehtnc) — CLOSED (semantics done)
451+
452+
Investigation (2026-06-18) found the interactive preview already renders crossrefs
453+
correctly, and Part 2 improved it:
454+
455+
- The q2-preview React renderer (`ts-packages/preview-renderer/src/q2-preview/`)
456+
has dedicated components for every crossref custom node — `custom/FloatRefTarget.tsx`,
457+
`CrossrefResolvedRef.tsx`, `Theorem.tsx`, `Proof.tsx`, `Equation.tsx` — registered
458+
in `registry.ts` and dispatched by `type_name` (`dispatchers.tsx:207`).
459+
`FloatRefTarget` composes "Figure N:" captions; `CrossrefResolvedRef` renders
460+
`<a class="quarto-xref" href="#id">{kind} {n}</a>`.
461+
- **Numbering, links, captions, figure-vs-div, theorems/proofs/equations all work**
462+
— 53 `custom-components.integration.test.tsx` tests pass.
463+
- **Part 2 also fixed preview's attribute-form figure crossref**: the
464+
`![cap](x){#fig-1}` figure is no longer destroyed by early auto-stretch, so it
465+
becomes a proper numbered `FloatRefTarget` custom node in preview too.
466+
- **nbsp parity: already correct.** `CrossrefResolvedRef.tsx` already emits a
467+
non-breaking space between kind and number (byte-confirmed: `…7d c2 a0 24…`);
468+
the "regular space" I first reported was a terminal-rendering artifact. No fix.
469+
470+
Decision (user): **close bd-zecehtnc as semantics-done.** The only remaining gap
471+
is *visual* revealjs auto-stretch parity for crossref figures in preview (a
472+
single-image crossref figure fills the slide in `render` but shows at natural size
473+
in `preview`, because the Rust auto-stretch transform skips `Block::Custom` and
474+
`FloatRefTarget.tsx` adds no `r-stretch`). Deferred to **bd-hbloemff** (recommended
475+
approach there: make `RevealAutoStretchTransform` CustomNode-aware + have
476+
`FloatRefTarget.tsx` honor the mark).
477+
450478
## Reference: key files
451479

452480
- Pipeline order: `crates/quarto-core/src/pipeline.rs:1078-1309`

0 commit comments

Comments
 (0)