10

Tôi đang thử nghiệm thiết kế logo trong Mathematica (8 hoặc cao hơn) bằng giao diện sổ ghi chép và tôi muốn thay đổi công thức tạo A LOT. Vấn đề là tôi chỉ biết SHIFT + ENTER mà làm cho tôi nhảy bên ngoài tế bào hiện tại của tôi và mất vị trí của tôi.Đánh giá ô hiện tại mà không để lại hoặc mất vị trí trong Mathematica

Có cách nào để đánh giá ô hiện tại mà không rời khỏi nó và mất vị trí của bạn trong đó không? Vì vậy: Đánh giá một ô và quay lại bên trong cùng một ô ở vị trí chính xác, tôi nhấn SHIFT + ENTER tại.

gì Tôi đã từng đến sử dụng là dọc theo dòng:

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

nhưng tôi hy vọng có chỉ là một tổ hợp phím hoặc sth. mà tôi không biết.

Edit:

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

là một chút cải thiện tốt đẹp để giải pháp của tôi như là một phần đề xuất bởi Chris Dengen.

Chỉnh sửa 2:

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

Điều này giải quyết:

  • những công việc chỉ với các tế bào sản xuất một hoặc một số tiếng của các tế bào sản lượng

EvaluationCell được thưa thớt tài liệu thật khó để tìm thấy trong thực tế tôi chỉ tình cờ gặp nó. Sử dụng EvaluationCell tìm kiếm bắt đầu từ phía trên (loại bỏ cấu trúc Do hai lần) vì chúng ta không đến từ một ô đầu ra tiếp tục xuống màn hình.

Những gì còn lại để được giải quyết:

  • người ta cần phải làm thủ công tế bào giữ (sổ sách kế toán ở cấp độ tế bào) hạ cánh tại nơi quan tâm
  • sử dụng bình luận dựa trên các dấu hiệu hạ cánh clutters ô nhập liệu

Lưu ý Câu hỏi này không làm mất vị trí hiện tại khi nhấn SHIFT + ENTER bên trong ô Mathematica. Nó không phải là về nội dung hoặc Thao tác. Xin lỗi vì đã không làm rõ điều đó ngay từ đầu.

Temporary Note

Bây giờ cố gắng như sau:

  1. xử lý sử dụng sự kiện để xác định một chính đánh giá kết hợp thay thế
  2. khi được kích hoạt, hãy tìm một cách để lưu trữ vị trí bàn phím chính xác trong ô nhập hiện tại
  3. đánh giá ô nhập hiện tại
  4. khôi phục vị trí trong t ô nhập hiện tại của anh ấy

Tôi nội bộ hy vọng một số chức năng có thể chỉ quan tâm đến việc lưu trữ/khôi phục cơ hội lạc quan. Mặc dù thực tế, tôi hy vọng tôi thậm chí có thể tìm được cách để có được vị trí bàn phím hiện tại. Sẽ theo dõi ở đây nếu có bất cứ điều gì xảy ra trong nỗ lực của tôi.

+0

Để mọi người đóng cửa: Hãy nhận ra rằng đây là câu hỏi về Wolfram Mathematica, chứ không phải Toán học! –

+0

@MikeBantegui cũng nhờ tôi thấy nó kỳ lạ là tốt. Có rất nhiều người dùng Mathematica/chuyên gia về SO và tôi hy vọng câu trả lời sẽ rất thú vị đối với tất cả mọi người. –

+0

Bạn có một ví dụ kỹ lưỡng hơn mà chúng tôi có thể chơi cùng với các thông số mà bạn sẽ điều chỉnh không? –

Trả lời

5

Bạn có thể chạy tế bào này hơn và hơn:

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

Phiên bản này đặt con trỏ sau khi Exp trong dòng 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

Cảm ơn nhưng những gì tôi thực sự muốn là quay trở lại * bên trong * ô * ở vị trí chính xác tôi nhấn SHIFT + ENTER tại *. –

+0

Câu trả lời cuối cùng của bạn là cải tiến so với câu trả lời ban đầu của tôi. Người ta có thể kết hợp của bạn với một điểm đánh dấu trong các bình luận như (* HERE *) để đến gần nơi mà một người đang làm việc tại thời điểm đó với lợi ích bổ sung là không phải chia những gì bạn sử dụng trong đối số thứ 2 của NotebookFind. –

+0

được chấp nhận vì bạn là người duy nhất đã hiểu bản chất của câu hỏi :) và đề xuất Do của bạn đã giúp cải thiện trải nghiệm ngay cả khi chỉ một chút nhỏ. Cảm ơn rất nhiều! –

1

Có một chức năng gọi là 'đánh giá tại chỗ' cho phép bạn chọn một phần của một ô, và chỉ cần đánh giá đó. Trên máy Mac, nó là lệnh-Enter, thay vì điều khiển-Enter.

Nhìn vào menu Đánh giá, mục trình đơn sẽ ở đó cùng với tổ hợp phím tắt bị ràng buộc.

+1

Chờ, thay thế lựa chọn hiện tại bằng biểu thức được đánh giá. Đó không phải là điều bạn muốn, phải không? –

2

Bạn có thể sử dụng năng động để làm mọi thứ thực sự tốt đẹp.

Các tế bào để hiển thị kết quả trong:

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

Các tế bào để chỉnh sửa trong:

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

Bạn có thể sau đó chỉ cần chỉnh sửa các ô phía dưới màn hình một. Nó tự động đặt bạn ngay nơi bạn đã nhập giá trị của bạn. Nếu bạn muốn tự mình làm mọi thứ dễ dàng hơn, bạn có thể sử dụng Thao tác:

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

Làm thế nào để sử dụng Manipulate? Một cái gì đó như

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}] 

Bạn chỉ có thể chỉnh sửa giá trị và khi nhấn enter, hãy tải phiên bản mới của ô. Bạn có thể lưu các ví dụ bạn thích bằng cách sử dụng nút '+' ở góc trên cùng bên phải của Manipulate để đặt dấu trang hoặc dán ảnh chụp nhanh.

enter image description here

+0

Đây là một ý tưởng gọn gàng và chắc chắn tôi sẽ nhớ sử dụng trong một số trường hợp. Tuy nhiên, đôi khi tôi có ma trận và tất cả các loại công cụ khác và bạn không nhận được định dạng hay sắp xếp tốt đẹp của những thứ như vậy trong một thao tác. Nó cảm thấy một cách kỳ quặc như thể tôi bị ném ra khỏi nhà ga, nơi tôi chỉ có thể nhập những dây đồng bằng không phải loại. –

+0

Bạn có thể nhập bằng cách sử dụng một số biểu mẫu sắp xếp (gốc tự do, quyền hạn, v.v.) nhưng tôi không thể có ma trận đẹp trong trường nhập. (Ít nhất là không sử dụng mục menu ** Insert ** theo cách thủ công. Các phím tắt để thêm hàng/cột không hoạt động trong trường nhập.) –

+0

Brett bạn có thể bọc MatrixForm quanh các danh sách trong InputFields và có được kết xuất đẹp nhưng sau đó bạn cần phải kiểm tra và xóa nó trong mã của bạn. Thao tác [ Nếu [Đầu [x] === Ma trận, Đầu tiên [x], x], {x, MatrixForm [{{2, 3}, {1, 2}}], ControlType -> InputField} ] –

2

Bạn có thể sử dụng chương trình máy tính xách tay ở mức độ thấp và một tính năng gọi là tế bào cập cảng để thêm một phần tử vào đầu máy tính xách tay của bạn mà sẽ thực hiện các tế bào hiện tại. Điều này (về lý thuyết, đã không thử nó) không nên đưa vị trí con trỏ ra khỏi tế bào.để tạo lập trình ô đã được lập trình, tạo một ô có nút thực hiện những gì bạn muốn, sau đó thực thi mã này: SetOptions[SelectedNotebook[],"DockedCells"->{Cell[ BoxData[ToBoxes[...your code for execute button...]] , "DockedCell"]}];

Tôi luôn làm việc này với biểu trưng của công ty dưới dạng ô cố định hoặc "Sao chép dưới dạng văn bản thuần túy"/"Sao chép dưới dạng bitmap" nút. Trên máy tính xách tay mà mess lên hạt nhân rất nhiều, tôi thêm các nút để quản lý mem hoặc thậm chí khởi động lại hạt nhân. Chỉ cần một loạt các phím tắt. Bạn có thể chồng nhiều đối tượng Cell [] dưới dạng ô được gắn.

Các vấn đề liên quan