A grocery list, totalled line by line, then footed twice: by the aisle on each row, and by the stop where that row will be bought

AThe list, at a glance

Type the items on your list, how many of each you need and the price you hold for one of them, and name the aisle and the stop for every row; this page totals each line, foots the list by the aisle label on each row, foots it again by the stop label on that row, and prints the one list total. It keeps six states apart: the empty list; the list as a plain list, with no price typed; the part-priced list; the fully priced list with an aisle and a stop on every row; the fully priced list with a label left blank; and the fully priced list carrying a typed zero.

No row carries an item or a quantity yet: the list is empty, so no line and no money figure prints.

Rows typed on this list: 0.

Rows still without a price: 0.

Turns the items, the quantities and the prices you type into a total for each line, a subtotal for every aisle you name and every stop you name, and one list total - and it shows that the two sets of subtotals come to the same figure.

Every item, every quantity, every price, every aisle label and every stop label on this page is typed by you. This page holds no item list, no starter list, no aisle list, no category list and no price of any kind: nothing typical, nothing average, nothing regional, nothing seasonal, nothing fetched and nothing cached. It names no shop, no chain, no market and no brand, and it compares none of them. It says nothing about nutrition, calories, allergens, diets, portions or food safety, nothing about what a household needs, and nothing about saving money. It divides nothing: there is no share, no percentage, no ratio and no cost per unit on this page or in its kit. Nothing you type leaves your browser; nothing is kept in this browser either, and the figures are gone when the tab closes.

BYour list, row by row

Say how many rows you need, then type them. Every figure on this page is one you already hold: the item off your own list, the quantity you need, the price off your own list, your own shelf label, a receipt line or your own estimate, and the aisle and the stop in whatever words you use for them.

Type the price of one of the things on that line, from your own list, your own shelf label, a receipt line or your own estimate. This page foots your list from the price you type against each line, and it does not split one total across the rows. If the only figure you hold is what the whole trip came to, type the rows you can price and leave the rest blank: the list, its row count and each stop's row count still print, the glance says how many rows have no price yet, and no money figure prints until every typed row carries a quantity and a price.

The first row

CEvery row of the list

One row an item, in the order you typed them. A whole quantity prints whole, a fraction of a quantity prints to a hundredth, and a price prints to the cent; the line is the quantity and the price the page read from your fields, multiplied before anything is printed, so re-multiplying the two cells as they stand need not give the figure this column shows. A row carrying no price keeps its place and says what it wants.

The item you typedHow manyThe price you holdThis lineThe aisle you namedThe stop you named
The first row, no item typednothing typednothing typed-nothing typednothing typed

DThe aisle margin

One row for every aisle label you typed, grouped by the characters you typed after the spaces at each end are trimmed and the case is folded, so Dairy and dairy are one aisle and any other difference stands as its own row; the word Dairy here shows the rule and is not an aisle this page offers you. A row you left without an aisle label is footed into the row named No aisle named, so no row of the list is missing from this margin.

The aisle you namedRows in this aisleWhat this aisle comes to
No row is typed yet--

EThe stop margin

One row for every stop label you typed, grouped by the characters you typed in the way the aisle labels are grouped, with the rows standing at that stop counted. The count is a count of rows and never a sum of quantities. A row you left without a stop label is footed into the row named No store named, so this margin holds every row the aisle margin holds.

The stop you namedRows at this stopWhat this stop comes to
No row is typed yet--

FThe two columns, read against each other

The aisle column and the stop column are the one list added up two ways. No figure here is printed until the list carries a row and every row you have typed carries a quantity and a price.

The aisle column of the whole list, footednot yet
The store column of the whole list, footednot yet
The one total the whole list comes tonot yet
Rows standing on the whole list (the money is withheld)0 rows
The two columns of the whole list, read against each othernot yet

GEvery figure, worked

Each line, then each margin row, then the two columns and the list total. The figures in these expressions are the unrounded ones the page carries, and the cent a line prints to is the printing and not the figure the page carried into the margins.

Each line

The first row, no item and no quantity on it-

Each margin row

The two columns and the list total

The aisle column of the whole list, footed, held back while the list waits-
The store column of the whole list, footed, held back while the list waits-
The one total the whole list comes to, held back while the list waits-
The difference the two columns of the whole list leave, held back while the list waits-

HWhat this page is waiting for, and what it read

Every sentence here names a state this page keeps apart. None of them is an error and none of them is advice. Each one counts in words, so a state is named here and not scored.

Nothing is typed on the list, so this page supplies no item, no quantity, no price, no aisle and no stop of its own and prints no figure at all.

Every item, every quantity, every price, every aisle label and every stop label on this page was typed by you. This page supplies none of them, divides nothing, and says nothing about food.

IThe six states, and how the figures are read

The empty list
No item typed and no quantity typed on any row. Nothing is claimed: no row prints a figure, no aisle and no stop is named, and the glance says the list is empty. This is the state the page ships in.
The list as a plain list, with no price typed
Item names typed and no price typed against any of them. The rows print, the count of rows prints, each aisle and each stop prints with the rows standing in it, and no money figure prints anywhere. A list of items is what the words grocery list usually mean, so the list is usable as a list before a price is typed at all.
The part-priced list
One typed row or more carries a quantity and no price, or a price and no quantity. No money figure prints at all while that row stands: not a line, not an aisle subtotal, not a stop subtotal, not the list total. The glance names how many rows are still without a price and how many are still without a quantity, where those figures would otherwise print. A half-priced list cannot print a confident total.
The fully priced list with an aisle and a stop on every row
Every typed row carries a quantity and a price, an aisle label and a stop label. Every figure prints: each line, every aisle subtotal, every stop subtotal, the rows at each stop, the list total, and the two columns read against each other.
The fully priced list with a label left blank
Three cases and not one: a row with an aisle and no stop, a row with a stop and no aisle, and a row with no label of either kind. Every figure still prints, and that row is footed into the row named No aisle named, or the row named No store named, or into each of them. It still counts in the row count, and in the count of rows at its stop where it names one, and it is never left out of the list total, so the two margins still come to one figure.
The fully priced list carrying a typed zero
A quantity of zero, or a price of zero, is a figure you typed and not a blank. The line prints as the zero it is, the row is footed into every subtotal it belongs to, and it still counts as a row in the row count and in the count of rows at its stop.
What is rounded, and what is not
Nothing is rounded on the way in and nothing is rounded on the way through. A line is its quantity multiplied by its price, carried unrounded into every subtotal and into the list total; the cent you read is the printing. So a reader who re-adds the printed column of lines by hand can land a cent away from the printed total, and section G prints the unrounded figures the page is carrying. The two columns are the one list added in two orders, and two orders of one addition in double arithmetic part in the last bits of the figure: the two feet of a list of thirty rows at the top of every range stay inside a ten-thousandth of a dollar of each other, which is a hundredth of the cent they are both printed to. The claim recorded on the cross-foot holds them to that ten-thousandth.
How a label is grouped
By the characters you typed, after the spaces at each end are trimmed and the case is folded. Dairy and dairy are one aisle; Dairy and Diary are two, and that is the point: a mistyped label stands as its own row where you can see it, instead of being quietly merged into a label you did not type. The words Dairy and Diary here show the rule; this page offers no aisle and names none. The spelling printed in the margin is the first one typed on the list, cut to its first twenty-four characters. A label of spaces alone is read as no label at all.
What the ranges are
A list is one to thirty rows. An item name is up to forty characters, an aisle and a stop label up to twenty-four each. A quantity is read from zero to nine hundred and ninety-nine, and a typed fraction such as 2.5 is multiplied exactly as typed and never rounded away. A price is read from zero to 9,999.99 dollars, at the cent step its own control offers, and a price typed to finer places is multiplied exactly as typed and never rounded away. A figure past the top of its own range is read at the top, and a figure that does not reach the bottom of it is read as not typed at all. The ranges each figure is read inside are the ranges its own control offers.

JThe decisions this page does not make

Each of these is yours. None of them is decided here, and no option set out here is recommended.

Which aisle a thing belongs in

One shop's dairy is another's chilled, and a household that shops from a list written in rooms, not in aisles, is not wrong. This page holds no aisle list, so the labels are the ones you type: the margin prints the first spelling typed for a label, trimmed at each end and cut to its first twenty-four characters.

What the price on a line is

A shelf label, a receipt line from last time, the figure on your own list, or your own estimate. This page holds none of them and reaches for none of them. It multiplies the figure you type by the quantity you type, and it says so on every row.

Where to buy a thing

The stop label is yours. This page names no shop, no chain, no market and no brand, and it says nothing about which stop is cheaper, nearer, better or worse. It foots the rows you put at each stop.

Whether a list is one list or several

A week can be one list of thirty rows or three lists of ten. One list is one total; three lists say what each trip was for. The workbook beside this page is written for the second, because its record sheet carries a date column and a list column.

What to do when the only figure you hold is the trip total

Nothing on this page splits one total back across the rows. A set of per-line guesses that happen to add up to a real total would print a cross-foot that is true while every line, every aisle subtotal and every stop subtotal on the page is invented. Type the rows you can price, leave the rest blank, and take the list and the counts.

KWhat this page will not do

LThe list that foots twice

The page keeps nothing when the tab closes. The kit is this arithmetic written as a dated workbook, with the formulas left in and no cached figure anywhere. Labels: one row for every aisle you use and every stop you make, between one and eight of them, in your own words, with the kind beside it and the label the List sheet picks it by. List: one row an item, two hundred rows of them, where you type the date, the list, the item, how many, the price you hold, the aisle off your own labels and the stop off your own labels, and along that row the sheet works out the line, carries a tick column for what you actually picked up that changes no figure, and prints a Check column saying what the row is still waiting for. Summary: the rows on the list, the list total, the aisle column's foot and the stop column's foot, with the rows with no aisle label and the rows with no stop label footed on their own, beside one row for every label you named with what it comes to as an aisle, what it comes to as a stop and how many rows stand at it as a stop. Check: every figure on the Summary worked a second way by a route of its own, and the identities that have to hold, each line with the difference printed and a yes or a NO beside it. Read me: what the book is, which sheets are in it, and the fingerprint of the spec it was built from. The second file is a short PDF: the rules the arithmetic follows and the decisions it does not make for you. Nothing in either file supplies an item, an aisle, a category or a price, and nothing in either file says what to buy.

Take the list that foots twice - $19

The kit is two files, for one price, yours to keep. No account, no subscription.