细胞

2011-07-14 193 views
1

如何改变细胞的$ contextPath中不使用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

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

回答

1

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

文档中心使用样式表(Reference.nb),其中Cell[StyleData["Input"]...的选项为CellContext->CellGroup。这也可以使用选项检查的文件中心的网页看到:

Option Inspector

此设置确实是手的文档中心,因为这意味着所有的例子在那里不会干涉彼此或与您的Global`定义。


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

Evaluation Menu

+0

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