如何改变细胞的$ contextPath中不使用Prepend
的contextPath中:细胞
$ContextPath = Prepend[$ContextPath, "PackageName`"]
我是在为$ContextPath
文档环顾四周,我决定在那里来评估第一输入单元格。
评估前:
后评价:
我猜测,这里的区别是,当这个文件被写入WebServices
对于没有启用写它的人。我们可以看到Global
位于该单元的上下文中,因为这已经被明确提及。看看Cell > Show Expression
的表达式。
选项CellContext
设置为全局。现在,让我们制作一个新单元并评估$Context
。
这意味着,细胞内我不能使用任何我在其他笔记本电脑所创建的全局对象。我们可以通过更改单元格的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"}
]
]
你得到的东西是这样的:
为什么上下文更改内部操纵?在其他笔记本内部,这不会发生。我猜测它与参考样式表的设置有关,但我无法弄清楚。我们如何才能临时更改文档笔记本的设置,以便我们可以在整个笔记本中使用全局上下文?
我仍然不明白为什么我得到了我在我的问题描述的行为,但我得到了它通过编辑样式表来修复。我只是重新定义了输入风格。原来,如果你修改输入和输出都有'CellContext - > Notebook',那么你在Manipulate内部和外部得到相同的上下文。无论如何,谢谢。 – jmlopez