A multi-page invoice table
Twelve invoice lines is one page and thirty is two, the second taking up the first's header and layout.
A figure on its own says nothing. Take 118 400 out of a table and it is a number and nothing else: what makes it mean something is the branch on its line and the quarter at the top of its column. The eye finds both without being asked — it runs up the column and along the row. Software reading the page aloud to somebody who cannot see it has no eye to run along a row, so unless the file says which heading goes with which figure, a table of thirty branches is read out as a hundred and twenty bare numbers.
The table below says it. It states that its first two rows are headings and that its first column is one too, and from that the library works out, figure by figure, which headings reach it — including the two that no straight line finds: the year, which stands over four quarters at once, and the word beside the column of branches, which covers both heading rows. This is what an accessibility audit asks of a table, and by hand it means writing it out for a hundred and twenty amounts. It runs onto a second page and is still one table there: the heading printed again at the top of page two is the same heading, not a second one.
Nothing is left out and nothing is simplified: this is the program exactly as it runs, for the developer who uses this library. The third is the description itself: a plain list of what the page has to say, which is what the service is sent.
Read the Rust source Read the Python source Read the JSON source
Twelve invoice lines is one page and thirty is two, the second taking up the first's header and layout.
What a cell can do with its own rectangle: the margin, the border, the room inside, the background.
A cell's four sides in four different colours, and coloured fills told apart from coloured borders.
A long table handed over whole, deciding for itself where the pages break: its heading on top of every page, its footnote under every page, its grey grounds stated once for the whole table, and a note you draw under each page at the exact place the table reports.
A specification sheet whose cells are merged down the rows: each group named once beside all of its rows, with one note beside them; the thin lines stop at those cells' edges, and a note too long for the rows it covers makes them grow.
One parts list twice: four columns sharing the width equally, then the reference, the quantity and the price each as wide as their own widest cell and the description given everything they leave.