单元的ContextPath

时间:2011-07-14 07:55:08

标签: wolfram-mathematica mathematica-8

如何在不使用Prepend的情况下更改单元格的$ ContextPath:

$ContextPath = Prepend[$ContextPath, "PackageName`"]

我正在查看$ContextPath的文档,我决定评估那里的第一个输入单元格。

评估前:

enter image description here

评估后:

enter image description here

我猜这里的不同之处在于,在编写此文档时,WebServices没有为编写它的人启用。我们可以看到Global位于该单元格的上下文中,因为已经明确提到了这一点。通过转到Cell > Show Expression来查看表达式。

enter image description here

选项CellContext设置为全局。现在,让我们创建一个新单元格并评估$Context

enter image description here

这意味着在该单元格内部,我无法使用我在其他笔记本中创建的任何全局对象。我们可以通过更改单元格的CellContext选项来添加Global。我们通过显示表达式和编辑来完成此操作。评估时,您将看到上下文已更改为全局。现在,只是为了它,让我们在我们刚刚将上下文更改为全局的单元格中尝试这个。

Print["Outside Module = ", $ContextPath]
Module[{},
 Print["Inside Module = ", $ContextPath];
 Manipulate[
  Print["Inside Manipulate = ", $ContextPath];
  Row[{
    Plot[x, {x, -3, 3}, PlotRange -> {{-3, 3}, {-3, 3}}]
    }],
  {{p1, {-1, 2}}, Locator, Appearance -> "L1"}
  ]
 ]

你得到这样的东西:

enter image description here

为什么Manipulate中的上下文会发生变化?在其他笔记本中,这不会发生。我猜它与参考样式表的设置有关,但我无法弄明白。我们如何才能临时更改文档笔记本的设置,以便我们可以在整个笔记本中使用全局上下文?

1 个答案:

答案 0 :(得分:1)

所以,如果我理解正确,你在文档中心笔记本中运行一些命令 - 你不理解上下文的行为?

文档中心使用样式表(Reference.nb),其中Cell[StyleData["Input"]...具有选项CellContext->CellGroup。使用文档中心页面上的Option Inspector也可以看到这一点:

Option Inspector

此设置非常适用于文档中心,因为这意味着其中的所有示例都不会相互干扰或与您的Global`定义相关。


您还可以通过评估菜单为任何特定笔记本设置默认上下文:

Evaluation Menu

相关问题