如何从Notebook []中删除不必要的选项?

Ale*_*kov 5 wolfram-mathematica

默认情况下Notebook[]有一小部分Options:

In[4]:= Options[EvaluationNotebook[]]

Out[4]= {FrontEndVersion -> 
  "7.0 for Microsoft Windows (32-bit) (February 18, 2009)", 
 StyleDefinitions -> "Default.nb", 
 WindowMargins -> {{0, Automatic}, {Automatic, 0}}, 
 WindowSize -> {616, 537}}
Run Code Online (Sandbox Code Playgroud)

有时我希望修改Notebook外观并设置其他内容Options.例如,我喜欢评论Plain而不是Bold:

SetOptions[EvaluationNotebook[], 
 AutoStyleOptions -> {"CommentStyle" -> {FontWeight -> Plain, 
     FontColor -> GrayLevel[0.6`], ShowAutoStyles -> False, 
     ShowSyntaxStyles -> False, AutoNumberFormatting -> False}}]
Run Code Online (Sandbox Code Playgroud)

现在Options[EvaluationNotebook[]]还将返回我设置的新选项.

但有时我希望恢复默认行为并删除其他内容Options.我怎样才能做到这一点?

Sim*_*mon 3

伊戈尔的回答几乎是正确的。删除设置的选项

SetOptions[EvaluationNotebook[], 
 AutoStyleOptions -> {"CommentStyle" -> {FontWeight -> Plain, 
     FontColor -> GrayLevel[0.6`], ShowAutoStyles -> False, 
     ShowSyntaxStyles -> False, AutoNumberFormatting -> False}}]
Run Code Online (Sandbox Code Playgroud)

你需要跑

SetOptions[EvaluationNotebook[], 
 AutoStyleOptions -> {"CommentStyle" -> Inherited}]
Run Code Online (Sandbox Code Playgroud)

但这仅适用于标准选项并且具有默认继承值(如果是单元格,则来自封闭部分或笔记本,如果是笔记本,则来自样式表)。如果你自己做出选择怎么办,例如

Protect[HiddenData];
SetOptions[EvaluationNotebook[], HiddenData -> {"here's a string"}]
Run Code Online (Sandbox Code Playgroud)

我不知道如何以编程方式删除此选项。


编辑:

实际上,要删除上面创建的 HiddenData 选项,我可以使用类似的东西

NotebookPut[DeleteCases[NotebookGet[EvaluationNotebook[]], 
                        $CellContext`HiddenData -> _], 
            EvaluationNotebook[]]
Run Code Online (Sandbox Code Playgroud)

编辑2:

向导先生询问如何删除所有用户设置的笔记本选项。假设这意味着所有选项都无法继承,那么我相信以下内容应该有效:

NotebookPut[
 With[{nb = NotebookGet[EvaluationNotebook[]], opts = Options[Notebook][[All, 1]]}, 
  Prepend[Select[Rest@nb, MemberQ[opts, First[#]] &], First@nb]], 
 EvaluationNotebook[]]
Run Code Online (Sandbox Code Playgroud)

但也许有一些与样式表相关的选项被我忽略了......

如果他的意思是如何恢复系统的默认笔记本选项 - 那么您可以删除所有笔记本选项:

NotebookPut[Notebook[First@NotebookGet[EvaluationNotebook[]]], 
            EvaluationNotebook[]]
Run Code Online (Sandbox Code Playgroud)

  • 如何使用它来删除所有用户设置的笔记本选项? (2认同)