10

ノートブックインターフェイスを使ってMathematica(8以上)のロゴデザインを実験しています。問題は私が現在のセルの外に飛び出して自分のポジションを失わせる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]; 

が、私はちょうど別のキーの組み合わせやSTHがある願っています。私は気付いていない。

編集:

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を2回構築する必要はありません)。

  • 1は、興味のある場所コメントベースの着陸マーカーのクラッタを使用して
  • 入力セル
  • に着陸するために、手動細胞保持(細胞レベルでの簿記)を実行する必要があります。解決されないまま何

    1は、Mathematicaノートブックのセルの内部SHIFT + ENTERを押すと

は、この質問は、およその現在位置を失っていません。これはコンテンツや操作に関するものではありません。初めにそのことを明確にしないと申し訳ありません。

  1. 使用イベントハンドラトリガされたときの正確なキーボードの位置を格納するための方法を見つける、代替評価キーの組み合わせ
  2. を定義するには:今、次のことをしようと

    一時注

    現在の入力セル

  3. 現在の入力セルを評価する
  4. tの位置を復元する彼は現在の入力セル

私は内部的にいくつかの機能が店舗を世話するかもしれない/偶然に楽観的であることを願っています。現実的ですが、私はまず、現在のキーボード位置に到達する方法を見つけることさえ願っています。私の試みから何かが現れたら、ここでフォローアップします。あなたはオーバーこのセルを実行して、オーバーすることができます

+0

誰でも閉じる:これは数学ではなく、Wolfram Mathematicaに関する質問です。 –

+0

@MikeBanteguiよく感謝しました。 Mathematicaのユーザー/エキスパートがたくさんいるので、その答えがすべてにとって面白いと思う。 –

+0

私たちが演奏できるもっと徹底的な例と、調整しているパラメータがありますか? –

答えて

5

:このバージョンを

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

は、1行目で経験した後にカーソルを置き:

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

あなたの最終的な答えは私の最初のものよりも改善されています。 NotebookFindの第2引数で使用しているものを分割しなくても済むという利点があり、その時点で作業している場所に非常に近い場所に着陸するようなコメント(* HERE *)のようなマーカーであなたのマーカーを組み合わせることができます。 –

+0

あなたが質問の性質を理解している唯一の人であったために受け入れられました:)あなたの提案は少しでも少しでも経験を改善する助けとなりました。どうもありがとう! –

1

ことができます「場所での評価」と呼ばれる機能がありますセルのセクションを選択し、それを評価するだけです。 Macではcontrol-Enterの代わりにcommand-Enterを押します。

評価メニューを見てください。メニューエントリは、バインドされたショートカットキーの組み合わせと共にそこにあるはずです。

+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]; 

あなたはその後、ちょうどディスプレイ1の下のセルを編集することができます。それは自動的にあなたがあなたの価値を入力した場所にあなたを置きます。

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

これはきちんとしたアイデアであり、場合によっては使用することを覚えています。しかし、時には私は行列やその他のものを持っているので、マニピュレートではそのようなものの組版や整形ができません。それは私が非typesetetプレーン文字列にしか入力できないターミナルにすべて投げ込まれたかのように、奇妙な制限を感じます。 –

+0

いくつかのタイプセット(ラジカル、パワーなど)を使用して入力することができますが、入力フィールドに素敵な行列を得ることができませんでした。 (少なくとも** Insert **メニュー項目を使用していなくても、行/列を追加するためのショートカットは入力フィールドで機能しませんでした) –

+0

Brettでは、MatrixFormをInputFieldsのリストの周りにラップして素敵なレンダリングを行うことができますもちろん、それをテストしてコード内で削除する必要があります。 [Head [x] === MatrixForm、First [x]、x]、 {x、MatrixForm [{{2,3}、{1,2}}、ControlType - > InputField}のように操作すると[ ] –

2

あなたは現在のセルを実行するノートブックの上部にセルを追加するために、低レベルのノートPCのプログラミングとドッキングした細胞と呼ばれる機能を使用することができます。これは(理論的には試していない)、カーソル位置をセルから外してはいけません。ドッキングされたセルをプログラムで作成するには、目的の機能を実行するボタンを持つセルを作成し、次にこのコードを実行します。SetOptions[SelectedNotebook[],"DockedCells"->{Cell[ BoxData[ToBoxes[...your code for execute button...]] , "DockedCell"]}];

私は、固定ロゴまたは "/"ビットマップとしてコピー"ボタン。カーネルをひどく混乱させるノートブックでは、私はmem管理のためのボタンを追加したり、カーネルを再起動したりします。ショートカットのシリーズ。複数のCell []オブジェクトをドッキングされたセルとしてスタックできます。