2

有没有一种方法可以创建笔记本,其中每个初始化Cell都将自动保存在其自己的具有任意名称的 .m 文件中?

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

4

1 回答 1

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 版本中幸存下来。

于 2013-02-14T17:07:02.403 回答