Skip to content

<notatio-worksheet>

<notatio-worksheet> -- a set of named expressions and a shared view of what they draw.

It is the reactive notebook with two additions, and the additions fall out of the cells rather than being configured:

- A cell that binds a plain number (s := 2) gets a slider. No separate control syntax, which is the whole point: a knob is just a binding you can move. - A cell that leaves an axis variable free gets drawn. z is the complex plane and colours as a portrait, x is a curve, x and y a surface. A cell that binds something draws nothing, so it stays off the screen without saying so.

Together those subsume Manipulate: PolyLog(s, z) over s := 2 is a portrait with a slider, and a second cell Zeta(s, z) is a second view sharing the same s — which is why there is no "which function?" control. Each drawable cell carries a visibility toggle, Desmos-style, and may override the projection its variables imply.

There is no cell history and no ordinals: every cell is defined by its name and recomputed from its dependencies. That is what separates a worksheet from [[notatio-notebook]], whose sequential mode is exactly the transcript this lacks.

Stories in the playground·packages/notatio-lit/src/notatio-worksheet.ts· in Vue: <Worksheet>

Attributes

AttributeTypeDefaultNotes
seedstring""A JSON array of the worksheet's initial cells. An entry is a source string, or an object {value, locked, bind, domain, integer} -- bind/domain pin the declaration so only the value can be edited. Sources are in the syntax in-form names; a binding is s := 2.
in-form
property inForm
string"notatio"The seed's syntax: notatio (default) or latex, the editor's own form.
screenstring"auto"Where the shared view sits: auto, side or below.
readonlybooleanfalseShow the cells without allowing edits. Implies a fixed structure.
structurestring"open"fixed keeps the reader from adding or removing cells; open (default) allows it.
loopLoop | ""== "reflect" || this.loop === "none" ? this.loop : "cycle"), setLoop: (loop) => (this.loop = loop), interval: NotatioWorksheet.PLAY_INTERVAL_MS, motion: "continuous", update: () => this.requestUpdate(), }, openPlaybackMenu, LONG_PRESS_MS, )What a sweeping binding does at the ends: cycle (default), reflect or none.reflects