Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

HTML writer drops table column widths: <col /> without style="width"

Aperta
#879 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust
Ambito
backend

Direzione di ricerca

Start in pampa/src/writers/html.rs and inspect the colgroup_kept_when_any_width_set test and the HTML table writer; the issue says the colspec already contains percentages for sections A and D. Render the supplied widths.qmd example to HTML and check whether each percentage column gets a width style. The separate pipe table dash-width reader gap is out of scope for this writer change.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug

Summary

Table column widths never reach the HTML output. The reader produces the right ColWidth values (both for tbl-colwidths and for ::: {.list-table widths="…"}), the writer decides a <colgroup> is needed because of them, and then writes every column as a bare <col />. Quarto 1 writes <col style="width: 20%"> for the same input.

The writer already knows: pampa/src/writers/html.rs has a test colgroup_kept_when_any_width_set whose comment says "The width itself isn't rendered yet — only the presence check" (bd-hixmy, from the table-default-rendering-parity plan, which scoped widths out). This issue is the user-visible symptom, filed so it is tracked somewhere findable: a docs site porting a fixed-layout config table (table-layout: fixed needs the <col> widths) had to reproduce them in CSS with col:nth-child(n) rules.

Repro

widths.qmd:

---
title: column widths
---

## A tbl-colwidths on a pipe table

| Key | Description | Type | Default |
|---|---|---|---|
| a | b | c | d |

: {tbl-colwidths="[20,40,15,25]"}

## B pipe table with relative dash widths (line over 72 chars)

| Key | Description | Type | Default |
|------|--------------------------|-------|----------------|
| a | a long description that pushes this line well past the seventy-two column limit | c | d |

## D list-table with widths

::: {.list-table widths="20,40,15,25"}
* - Key
  - Description
  - Type
  - Default
* - a
  - b
  - c
  - d
:::
quarto render widths.qmd --to html --output-dir q1
q2 render widths.qmd --to html --output-dir q2out

<col> elements per section:

Section Quarto 1 (99.9.9 dev) q2 0.35.0-nightly.20261021
A tbl-colwidths <col style="width: 20%"> 40% 15% 25% no <colgroup> at all, plus an empty <caption> </caption>
B dash-width pipe table <col style="width: 10%"> 47% 12% 29% no <colgroup>
D list-table widths <col style="width: 20%"> 40% 15% 25% <colgroup> with four bare <col />

AST colspecs (q2 render --to json vs quarto pandoc -t json):

  • A: q2 ColWidth 0.2 / 0.4 / 0.15 / 0.25 (the reader folds tbl-colwidths into the colspec, which Quarto 1 only does later in a filter: its pandoc AST shows ColWidthDefault). So for A the reader is ahead of the writer, and only the writer is missing.
  • D: q2 ColWidth 0.2 / 0.4 / 0.15 / 0.25. Same: writer only.
  • B: q2 ColWidthDefault ×4, Quarto 1 / pandoc 0.109 / 0.473 / 0.127 / 0.291. Pandoc's rule (relative widths from the separator-row dash counts when any line exceeds the column width) is not implemented in treesitter_utils/pipe_table.rs (colspec.push((alignment, ColWidth::Default))). That is a reader gap, mentioned here only so the three cases are in one place; split it out if you prefer.

Expected

<col style="width: NN%"> per column whenever the colspec has a ColWidth::Percentage, matching Quarto 1 / pandoc's HTML writer (percentages rounded to integers, as pandoc does). Section A should also not emit an empty <caption> when the caption block only carries attributes.

Environment

q2 0.35.0-nightly.20261021 (macOS arm64); repo at ad283a2cb. Quarto 1 at 99.9.9 (dev build from quarto-cli).

Lingua principale
Rust
Stelle
278
Fork
19
Merge medio
20h 23m
PR unite (30g)
164

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di quarto-dev/q2

Tutte le issue di quarto-dev/q2

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.