細胞

2011-07-14 229 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