Low-Level Notebook Structure
Like everything else in the Wolfram Language, notebooks are ultimately symbolic expressions. When you edit notebooks—or apply high-level programmatic functions—the Wolfram Language automatically updates these expressions. But if you look at the lowest level—say by opening a notebook file as text—you will see the underlying expressions, in which formatting constructs are represented as a hierarchy of low-level symbolic "boxes".
— toggle between formatted display and underlying symbolic expression
Notebook — low-level symbolic representation for a notebook
Cell — low-level representation for a cell in a notebook
CellGroupData — low-level representation for a cell group in a notebook
BoxData — low-level representation of the contents of a typesetting cell
TextData ▪ RawData ▪ StyleData
RowBox — low-level representation for a row of arbitrary elements
GridBox — low-level representation of an arbitrary 2D layout
SuperscriptBox ▪ SubscriptBox ▪ SubsuperscriptBox
OverscriptBox ▪ UnderscriptBox ▪ UnderoverscriptBox
FractionBox ▪ SqrtBox ▪ RadicalBox
StyleBox — low-level wrapper specifying styles and style options to apply
InterpretationBox — representation of arbitrary boxes with a specific interpretation
TagBox — representation of boxes with a tag expression to provide interpretation hints
TemplateBox — representation of parameters substituted into specific display and interpretation functions
FormBox — representation of boxes to be displayed and interpreted as a given form
ErrorBox — representation of uninterpretable box contents
DisplayFunction ▪ InterpretationFunction ▪ CopyFunction ▪ AutoDelete ▪ DeletionWarning ▪ StripWrapperBoxes ▪ SyntaxForm