Две ячейки инициализации в одной записной книжке, каждая из которых автоматически сохраняется в отдельном .m-файле? - PullRequest
2 голосов
/ 08 апреля 2011

Есть ли способ создать Блокнот, в котором каждая Инициализация Cell будет автоматически сохраняться в своем собственном .m-файле с произвольным именем?

PS Вопрос связан с Mathematica Программа, разработанная Wolfram Research Inc. Это не математика или математика.

1 Ответ

1 голос
/ 14 февраля 2013

Я не уверен, удовлетворит ли вас следующий подход: я когда-то хотел создать компактный блокнот, содержащий только ячейки инициализации, найденные в моем блокноте для разработки; следующий код записывает ячейки инициализации текущей записной книжки в одну новую записную книжку и автоматически сохраняет файл .m как побочный эффект, но его можно легко адаптировать для создания отдельной записной книжки и файла .m для каждой ячейки инициализации.

In[162]:= nbToExtract = SelectedNotebook[]

In[163]:= 
extractInitializationCells[nb_] :=
 Block[{nbNew = CreateDocument[], count = 0},
  (SelectionMove[nb, Next, Cell];
   While[NotebookRead[nb] =!= {}, (If[InitializationCell /. 
          Options[NotebookSelection[nb], InitializationCell],
      (count++;
       NotebookWrite[nbNew, NotebookRead[nb]]), {}]; SelectionMove[nb, Next, Cell])];
   Print[ToString[count] <> " initialization cell(s) found"];
   CurrentValue[nbNew, AutoGeneratedPackage] = Automatic;
   NotebookSave[nbNew, fn];
   NotebookClose[nbNew];
   Clear[nbNew](* just in case *))]

extractInitializationCells[nbToExtract]

Это извлекает только ячейки инициализации ниже ячейки, в которой вызывается функция extractInitializationCells. И я согласен с предыдущими предостережениями об использовании механизма пакета автоматической генерации. Кроме того, CurrentValue не защищен на неопределенный срок от обратной несовместимости, но до сих пор сохранился в нескольких основных версиях Mathematica.

...