10

我正在Mathematica(8或以上版本)中使用筆記本界面試驗標誌設計,我想更改生成公式A LOT。問題是我只知道SHIFT + ENTER,這讓我跳到當前單元格外面,失去了我的位置。在Mathematica中評估當前單元而不離開或丟失它的位置

有沒有辦法評估當前的細胞而不離開它並丟失它的位置?因此:評估一個單元格並返回裏面的相同單元格在我按下SHIFT + ENTER的確切位置

我曾經來使用是沿線:

a = Exp[1.994 \[Pi]/(3 I)]; 

b = Nest[{#, a #, a\[Conjugate] #, #} &, 1, 5]; 

{Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {\[Rho]\[Chi], # // 
    Line} & // Graphics 

NotebookFind[EvaluationNotebook[], "E" <> "xp", Previous]; 

,但我希望有隻是一個組合鍵或某事。我不知道。

編輯:

a = Exp[(*1*)1.994 \[Pi]/(3 I)]; 

b = Nest[{#, a #, a\[Conjugate] #, #} &, (*2*)1, (*3*)5]; 

{Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {\[Rho]\[Chi], # // 
    Line} & // Graphics 

Do[NotebookFind[EvaluationNotebook[], "(*1*)", Previous], {2}]; 

是一個不錯的改進,我的解決方案部分由克里斯Dengen建議。

編輯2:

NotebookFind[EvaluationNotebook[], "(*1*)", EvaluationCell] 

這解決了:

  • 與產生細胞中的這些唯一的工作的一個或一個已知的數輸出單元的

EvaluationCell稀疏記錄實際上我很難發現,但我偶然發現了它。使用EvaluationCell,搜索從上面開始(消除Do兩次構造),因爲我們不是從屏幕下方的輸出單元出發。

仍有待解決:

  • 需要做的手工細胞保存(簿記在細胞水平),使用基於註釋的着陸標誌雜波
  • 輸入單元格
  • 感興趣的地方降落

注意 這個問題是關於不喪失當前位置時,一個按Shift + Enter一個Mathematica筆記本細胞內。這不是關於內容或操作。對不起,一開始就沒有說清楚。

臨時注

現在嘗試以下操作:

  1. 使用事件處理程序定義一個替代評估組合鍵
  2. 觸發時,找到一種方法來存儲在精確的鍵盤位置當前輸入單元
  3. 評估當前輸入單元
  4. 恢復t中的位置他目前的輸入單元格

我在內部希望某些功能可能只是照顧存儲/恢復,偶然樂觀。儘管現實,我首先希望我能找到一種方法來獲得當前的鍵盤位置。如果在我的嘗試中發生任何事情,我會跟進。

+0

對任何人關閉:請意識到這是一個關於Wolfram Mathematica的問題,而不是數學! –

+0

@MikeBantegui非常感謝我發現它也很奇怪。 SO上有很多Mathematica用戶/專家,我希望這個答案對所有人都很有意思。 –

+0

您是否有更透徹的示例,我們可以一起玩,以及您將要調整的參數? –

回答

5

您可以反覆運行該細胞:

a = Exp[1.994 \[Pi]/(3 I)]; 
b = Nest[{#, a #, a\[Conjugate] #, #} &, 1, 5]; 
{Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {# // 
    Line} & // Graphics 
Do[NotebookFind[EvaluationNotebook[], "Exp", Previous], {3}]; 
SelectionMove[EvaluationNotebook[], "Exp", After]; 
+0

謝謝,但我真正想要的是退回*在單元格* *在確切的位置我按SHIFT + ENTER在*。 –

+0

你的最終答案是對我最初的一個改進。可以將你的註釋中的標記與(* HERE *)結合使用,以便與當前正在工作的位置非常接近,並且不必拆分在NotebookFind的第二個參數中使用的內容。 –

+0

已被接受,因爲您是唯一瞭解問題性質的人:)並且您的建議有助於改善體驗,即使只是一點點。非常感謝! –

1

有一個調用的函數「來代替評估」,它可以:

If[NumberQ[x], x++, x = 1]; 
Print[x] 
Do[SelectionMove[EvaluationNotebook[], Previous, Cell], {2}] 

這個版本在1號線將光標置於的EXP後你選擇一個單元格的一部分,然後對其進行評估。在Mac上,它是命令Enter,而不是Control-Enter。

看看Evaluate菜單,菜單條目應該和綁定的快捷鍵組合在一起。

+1

等待,用它的評估表達式替換當前選擇。那不是你想要的,是嗎? –

2

您可以使用動態來使事情變得非常好。

的單元格中顯示的結果:

Dynamic[b = Nest[{#, a #, a\[Conjugate] #, #} &, 1, 5];] 
Dynamic[{Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {\[Rho]\[Chi], # // 
     Line} & // Graphics] 

的細胞編輯:

k = 1.994; 
a = Exp[k \[Pi]/(2 I)]; 
NotebookFind[EvaluationNotebook[], ToString[k], Previous]; 

然後,您可以編輯這個顯示一個下面的單元格。它會自動將您置於您輸入價值的位置。如果你想使你自己的事情更容易,你可以使用操縱:

Manipulate[a = Exp[k \[Pi]/(f I)]; 
b = Nest[{#, a #, a\[Conjugate] #, #} &, 1, 5]; 
{Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, a b, a\[Conjugate] b, -b}]] // {\[Rho]\[Chi], # // 
     Line} & // Graphics, 
{{k, 1.994}, -3, 3}, 
{{f, 3}, -3, 3}] 
3

有關使用Manipulate如何?類似於:

Manipulate[ 
c = a; 
b = Nest[[email protected], 1, 
    5]; {Re[#], Im[#]} & /@ 
    Accumulate[ 
    Flatten[{0, c b, c\[Conjugate] b, -b}]] // {Red, # // Line} & // 
    Graphics, {a, Exp[1.994 \[Pi]/(3 I)], 
    ControlType -> InputField}, {f, 
    HoldForm[{#, C#, c\[Conjugate] #, #} &], ImageSize -> Full, 
    ControlType -> InputField}] 

您可以編輯這些值,然後點擊輸入獲取新版本的圖。您可以使用Manipulate右上角的'+'按鈕來保存您喜歡的示例,以設置書籤或粘貼快照。

enter image description here

+0

這是一個整潔的想法,當然我會記得在某些情況下使用。然而有時候我有矩陣和各種其他的東西,你不會在Manipulate中排版或格式化這些東西。這感覺有點奇怪,就好像我一直拋到終端,我只能輸入非排版的純字符串。 –

+0

你可以使用一些排版形式(部首,冪等等)輸入,但我無法在輸入字段中獲得好的矩陣。 (至少不是沒有手動使用** Insert **菜單項,添加行/列的快捷方式在輸入字段中不起作用。) –

+0

Brett你可以在InputFields的列表中包裝MatrixForm,並獲得很好的渲染效果,但當然你需要測試它並在代碼中刪除它。如果[Head [x] === MatrixForm,First [x],x], {x,MatrixForm [{{2,3},{1,2}}],ControlType - > InputField} ] –

2

你可以使用低級別的筆記本電腦編程和一個叫停靠細胞功能的細胞添加到您的筆記本電腦的頂部將執行當前單元格。這(理論上,沒有嘗試過)不應該將光標移出單元格。以編程方式創建停靠的單元格,創建一個單元格,該單元格具有您想要的按鈕,然後執行以下代碼:SetOptions[SelectedNotebook[],"DockedCells"->{Cell[ BoxData[ToBoxes[...your code for execute button...]] , "DockedCell"]}];

我一直在使用公司徽標作爲固定單元格或「複製爲純文本」 /「複製爲位圖」按鈕。在大量混淆內核的筆記本電腦上,我添加了用於內存管理的按鈕,甚至重新啓動內核。只是一系列的捷徑。您可以將多個Cell []對象堆疊爲停放的單元格。

相關問題