Notebooks as Wolfram Language Expressions

Expressions corresponding to notebooks.

Here is a simple Wolfram System notebook.

Here is the expression that corresponds to this notebook.

Notebook[{
    Cell["Section heading", "Section"],
    Cell["Some text.", "Text"],
    Cell["More text.", "Text"]}]

Just like individual cells, notebooks in the Wolfram System can also have options. You can look at and modify these options using the Option Inspector in the standard notebook front end.

A few of the large number of possible options for notebooks.

A notebook with the option setting (RefLink[Saveable, paclet:ref/Saveable])->(RefLink[False, paclet:ref/False]) can always be saved using the (MenuGrayLink[Save As, paclet:ref/menuitem/SaveAs]) menu item, but does not respond to (MenuGrayLink[Save, paclet:ref/menuitem/Save]) and does not prompt for saving when it is closed.

In addition to notebook options, you can also set any cell option at the notebook level. Doing this tells the Wolfram System to use that option setting as the default for all the cells in the notebook. You can override the default by explicitly setting the options within a particular cell or by using a named style which explicitly overrides the option.

Here is the expression corresponding to a notebook with a ruler displayed in the toolbar at the top of the window.

Notebook[{
    Cell["Section heading", "Section"],
    Cell["Some text.", "Text"]},
       WindowToolbars->{"RulerBar"}]

This is what the notebook looks like in the front end.

This sets the default background color for all cells in the notebook.

Notebook[{
    Cell["Section heading", "Section"],
    Cell["Some text.", "Text"]},
       Background->GrayLevel[.7]]

Now each cell has a gray background.

If you go outside of the Wolfram System and look at the raw text of the file that corresponds to a Wolfram System notebook, you will find that what is in the file is just the textual form of the expression that represents the notebook. One way to create a Wolfram System notebook is therefore to construct an appropriate expression and put it in a file.

In notebook files that are written out by the Wolfram System, some additional information is typically included to make it faster for the Wolfram System to read the file in again. The information is enclosed in Wolfram Language comments indicated by (*…*) so that it does not affect the actual expression stored in the file.

Setting up notebooks in the front end from the kernel.

This writes a notebook expression out to the file sample.nb:

Notebook[{Cell["Section heading","Section"],Cell["Some text.","Text"]}]>>"sample.nb"

This reads the notebook expression back from the file:

<<sample.nb

This opens sample.nb as a notebook in the front end:

NotebookOpen["sample.nb"];

Once you have set up a notebook in the front end using (RefLink[NotebookOpen, paclet:ref/NotebookOpen]), you can then manipulate the notebook interactively just as you would any other notebook. But in order to use (RefLink[NotebookOpen, paclet:ref/NotebookOpen]), you have to explicitly have a notebook expression in a file. With (RefLink[NotebookPut, paclet:ref/NotebookPut]), however, you can take a notebook expression that you have created in the kernel, and immediately display it as a notebook in the front end.

Here is a notebook expression in the kernel:

Notebook[{Cell["Section heading","Section"],Cell["Some text.","Text"]}]

This uses the expression to set up a notebook in the front end:

NotebookPut[%]

You can use (RefLink[NotebookGet, paclet:ref/NotebookGet]) to get the notebook corresponding to a particular (RefLink[NotebookObject, paclet:ref/NotebookObject]) back into the kernel:

NotebookGet[%]