Files
paperspec/spec/09-figures-tables-equations.md
alexm 4fa326dc76
check / check (push) Successful in 42s
site / site (push) Successful in 3m4s
First implementation (#1)
Reviewed-on: #1
2026-10-15 05:47:05 -04:00

2.3 KiB
Raw Permalink Blame History

9. Figures, tables and equations

9.1 Figures and panels

A figure holds its panels, its caption and its notes. A panel's own content is its label only. Its image and region are evidence, not content: re-extracting the image at native resolution adds an asset and changes no hash.

Panel attribute Holds
image {sha256, media_type, native, dpi?}: the embedded image, at native resolution when the PDF holds one.
crop {sha256, media_type, dpi}: a crop of the panel's region at a fixed resolution.
figure_text [{id, text, role, page_fp?, boxes?}]: text found inside the panel, with role axis-label, tick-label, legend, annotation or other.

Text inside a figure is not prose and is not split into sentences. Its items have IDs (4.2) so that a digitization can anchor its axis labels to them. A panel's region on the page is its location (7.4).

9.2 Tables

A table holds its caption, an optional head, one body and its notes. Rows and cells are nodes, with all five values, so the gate, the hashes and the database treat them like any other node, and a cell is addressed like a sentence.

Columns are defined in the table's columns attribute, each with an ID and a header path: the IDs of the header cells above it, outermost first. Header text is stored once, in the header cells. A row's header_path lists the cells that label it: a row-group header and the row's own header cell. A cell records its column, its spans and its role; the expanded grid is derived, never stored.

So inserting a row that a reading dropped adds a row node and changes no other row's or cell's ID or hash, and fixing a header cell changes that cell, not the table. A table continued across pages is one table node; its pages are locations. For people, a cell can be shown as "Table 2, row CT–CT, column K_r" from its header paths.

9.3 Equations

An equation keeps its source as written, tex from a conversion or typst from a draft, and its printed number as its label, so numbering never collides with a renderer's own. An equation that the source numbers line by line (Eq. 3a) has equation-line children, each with its own label and source. MathML is derived by a pinned tool and recorded, with the tool's name and version, in derived/mathml.jsonl.