Автоматическое создание записных книжек со свернутыми разделами

Блок кода ниже

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"]}
 ]

создаст блокнот-скелет.

Можно ли создать тот блокнот, чтобы разделы были свернуты? Таким образом, записная книжка будет отображаться так, как если бы (например) была нажата ячейка, закрывающая Раздел 1. То же самое для разделов 2 и 3.


person dwa    schedule 12.05.2011    source источник


Ответы (1)


Используйте CellGroup для открытия или закрытия определенных ячеек — см. 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"]}]

Или вы можете обернуть всю коллекцию TextCells в одну высокоуровневую CellGroup и поиграть с необязательным вторым аргументом CellGroup. Например, это откроет только первые три группы ячеек:

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}]
}]
person Bill White    schedule 12.05.2011
comment
Спасибо @Билл Уайт! Первый пример был как раз тем, что мне нужно. - person dwa; 12.05.2011
comment
И спасибо, что приняли мой ответ. Кстати, использование Closed в качестве второго аргумента CellGroup кажется недокументированным, если только я что-то не упускаю из виду. Я использую CellGroupData[{...}, Closed] все время при программном создании блокнотов, и Closed здесь тоже работает нормально. - person Bill White; 12.05.2011