Search code examples
wolfram-mathematicacreation

Automagically generating notebooks with collapsed sections


The code block below

CreateDocument[{
  TextCell["Title", "Title"],
  TextCell["Subtitle", "Subtitle"],
  TextCell["Section 1", "Section"],
  TextCell["Section 1.1", "Subsection"],
  TextCell["Section 1.2", "Subsection"],
  TextCell["Section 1.3", "Subsection"],
  TextCell["Section 2", "Section"],
  TextCell["Section 2.1", "Subsection"],
  TextCell["Section 2.2", "Subsection"],
  TextCell["Section 2.3", "Subsection"],
  TextCell["Section 3", "Section"],
  TextCell["Section 2.1", "Subsection"],
  TextCell["Section 2.2", "Subsection"],
  TextCell["Section 2.3", "Subsection"]}
 ]

will create a skeleton notebook.

Is it possible to create that notebook so that the sections are collapsed? So that the notebook will be displayed as if (eg) the Cell closer covering Section 1 had been clicked. Ditto for Sections 2 & 3.


Solution

  • Use CellGroup to open or close specific cells - see http://reference.wolfram.com/mathematica/ref/CellGroup.html

    CreateDocument[{
      TextCell["Title", "Title"],
      TextCell["Subtitle", "Subtitle"],
      CellGroup[{
        TextCell["Section 1", "Section"],
        TextCell["Section 1.1", "Subsection"], 
        TextCell["Section 1.2", "Subsection"], 
        TextCell["Section 1.3", "Subsection"]
      }, Closed],
      TextCell["Section 2", "Section"],
      TextCell["Section 2.1", "Subsection"], 
      TextCell["Section 2.2", "Subsection"], 
      TextCell["Section 2.3", "Subsection"],
      TextCell["Section 3", "Section"],
      TextCell["Section 2.1", "Subsection"], 
      TextCell["Section 2.2", "Subsection"], 
      TextCell["Section 2.3", "Subsection"]}]
    

    Or you could wrap the entire collection of TextCells in one high-level CellGroup and play with CellGroup's optional second argument. For example, this will open only the first three cell groups:

    CreateDocument[{
      CellGroup[{
        TextCell["Title", "Title"],
        TextCell["Subtitle", "Subtitle"],
        TextCell["Section 1", "Section"],
        TextCell["Section 1.1", "Subsection"], 
        TextCell["Section 1.2", "Subsection"], 
        TextCell["Section 1.3", "Subsection"],
        TextCell["Section 2", "Section"],
        TextCell["Section 2.1", "Subsection"], 
        TextCell["Section 2.2", "Subsection"], 
        TextCell["Section 2.3", "Subsection"],
        TextCell["Section 3", "Section"],
        TextCell["Section 2.1", "Subsection"], 
        TextCell["Section 2.2", "Subsection"], 
        TextCell["Section 2.3", "Subsection"]
      }, {1, 2, 3}]
    }]