Wolfram mathematica 单元格的上下文路径

Wolfram mathematica 单元格的上下文路径,wolfram-mathematica,mathematica-8,Wolfram Mathematica,Mathematica 8,如何在不使用Prepend的情况下更改单元格的$ContextPath: $ContextPath = Prepend[$ContextPath, "PackageName`"] 我查看了$ContextPath的文档,决定评估其中的第一个输入单元格 评估前: 评估后: 我猜这里的区别在于,当编写此文档时,WebServices没有为编写它的人启用。我们可以看到,Global位于该单元格的上下文中,因为已经明确提到了这一点。通过转到Cell>Show expression查看表达式 选项

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

$ContextPath = Prepend[$ContextPath, "PackageName`"]
我查看了
$ContextPath
的文档,决定评估其中的第一个输入单元格

评估前:

评估后:

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

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

这意味着在该单元格内,我不能使用我在其他笔记本中创建的任何全局对象。我们可以通过更改单元格的CellContext选项来添加全局。我们通过显示表达式和编辑来实现这一点。当您进行评估时,您将看到上下文已更改为全局。现在,让我们在刚刚将上下文更改为全局的单元格中尝试一下

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"}
  ]
 ]
你会得到这样的东西吗:


为什么内部的上下文会发生变化?在其他笔记本电脑中,这种情况不会发生。我猜这与参考样式表的设置有关,但我就是搞不懂。我们如何临时更改文档中心笔记本的设置,以便在整个笔记本中使用全局上下文?

因此,如果我理解正确,您正在文档中心笔记本中运行一些命令,而您不了解上下文的行为

文档中心使用样式表(Reference.nb),其中
单元格[StyleData[“Input”]…
具有选项
CellContext->CellGroup
。这也可以通过文档中心页面上的选项检查器看到:

此设置实际上是文档中心的手动设置,因为它意味着其中的所有示例不会相互干扰,也不会干扰您的
Global`
定义


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


那么,如果我理解正确,您正在文档中心笔记本中运行一些命令,而您不了解上下文的行为

文档中心使用样式表(Reference.nb),其中
单元格[StyleData[“Input”]…
具有选项
CellContext->CellGroup
。这也可以通过文档中心页面上的选项检查器看到:

此设置实际上是文档中心的手动设置,因为它意味着其中的所有示例不会相互干扰,也不会干扰您的
Global`
定义


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


我仍然不明白为什么我会有我在问题中描述的行为,但我通过编辑样式表将其修复。我只是重新定义了输入样式。结果表明,如果将输入和输出都修改为
CellContext->Notebook
,那么你会得到相同的内部和外部上下文。无论如何,谢谢。我仍然不明白为什么我会有我在问题中描述的行为,但我通过编辑样式表得到了修复。我只是重新定义了输入样式。结果表明,如果您将输入和输出都修改为具有
CellContext->Notebook
,那么您在内部和外部都会得到相同的上下文。无论如何,谢谢