一个笔记本中的两个初始化单元格在单独的.m文件中自动保存?

时间:2011-04-08 03:23:33

标签: wolfram-mathematica mathematica-frontend

有没有办法创建Notebook,其中每个初始化Cell将自动保存在自己的.m文件中,并且具有任意名称?

P.S。这个问题与Wolfram Research Inc.开发的 Mathematica 程序有关。它与数学或数学无关。

1 个答案:

答案 0 :(得分:1)

我不确定以下方法是否会让您满意:我曾经想要一种生成紧凑型笔记本的方法,该笔记本仅包含我的开发笔记本中的初始化单元格;下面的代码将当前笔记本的初始化单元格写入一个新的笔记本中,并将.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版本中。