有没有办法创建Notebook,其中每个初始化Cell
将自动保存在自己的.m文件中,并且具有任意名称?
P.S。这个问题与Wolfram Research Inc.开发的 Mathematica 程序有关。它与数学或数学无关。
答案 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版本中。