【问题标题】:How to delete unnecessary options from Notebook[]?如何从 Notebook[] 中删除不必要的选项?
【发布时间】:2011-03-08 06:37:35
【问题描述】:

默认情况下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}}

有时我希望修改Notebook 的外观并设置额外的Options。例如,我喜欢让 cmets 成为 Plain 而不是 Bold

SetOptions[EvaluationNotebook[], 
 AutoStyleOptions -> {"CommentStyle" -> {FontWeight -> Plain, 
     FontColor -> GrayLevel[0.6`], ShowAutoStyles -> False, 
     ShowSyntaxStyles -> False, AutoNumberFormatting -> False}}]

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

但有时我希望恢复默认行为并删除额外的Options。我怎样才能做到这一点?

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

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

    SetOptions[EvaluationNotebook[], 
     AutoStyleOptions -> {"CommentStyle" -> {FontWeight -> Plain, 
         FontColor -> GrayLevel[0.6`], ShowAutoStyles -> False, 
         ShowSyntaxStyles -> False, AutoNumberFormatting -> False}}]
    

    你需要跑

    SetOptions[EvaluationNotebook[], 
     AutoStyleOptions -> {"CommentStyle" -> Inherited}]
    

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

    Protect[HiddenData];
    SetOptions[EvaluationNotebook[], HiddenData -> {"here's a string"}]
    

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


    编辑:

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

    NotebookPut[DeleteCases[NotebookGet[EvaluationNotebook[]], 
                            $CellContext`HiddenData -> _], 
                EvaluationNotebook[]]
    

    编辑 2:

    Mr Wizard 询问如何删除所有用户设置的笔记本选项。假设这意味着所有选项都不能被继承,那么我相信以下应该可行:

    NotebookPut[
     With[{nb = NotebookGet[EvaluationNotebook[]], opts = Options[Notebook][[All, 1]]}, 
      Prepend[Select[Rest@nb, MemberQ[opts, First[#]] &], First@nb]], 
     EvaluationNotebook[]]
    

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

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

    NotebookPut[Notebook[First@NotebookGet[EvaluationNotebook[]]], 
                EvaluationNotebook[]]
    

    【讨论】:

    • 谢谢。 NotebookGet/NotebookPut 的方法对我来说绝对是新的。
    • 你如何使用它来删除所有用户设置的笔记本选项?
    • @Mr.Wizard:好问题。请参阅编辑 2。
    • @Mr.Wizard:我的意思是没有实际影响的格式差异。我想这是一个数学短语。想想Modular_Arithmetic 中使用的 Mod[] 运算符。在物理系统中,如果您的对称性改变了数学的形式,而不是物理的形式,您可以说某些东西是相同的“模对称变换”。
    【解决方案2】:

    (1) 选择Format -> Options Inspector(或Windows 上的Shift+Ctrl+O

    (2) 对于“显示选项值”旁边的两个字段,选择 Notebookas text

    (3) 选中并删除下方框中的所有文字

    (4) 点击Apply

    在了解了 NotebookGet 之后,我相信这适用于完整的选项重置。

    NotebookPut[
     Notebook@First@NotebookGet[EvaluationNotebook[]],
     EvaluationNotebook[]]
    

    【讨论】:

    • 有没有办法以编程方式做到这一点?
    • 好问题!我得考虑一下。我倾向于手动做这些事情,因为我不经常这样做。
    【解决方案3】:

    用途:

    SetOptions[EvaluationNotebook[], Background -> Inherited]
    

    伊戈尔

    【讨论】:

    • 这似乎不起作用。也就是说,样式化的 cmets 保持样式化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2012-08-28
    • 2015-02-23
    • 2012-06-08
    • 2012-03-28
    相关资源
    最近更新 更多