8

Mathematica のコードを Web サイト (SO など) からノートブックにコピーすることがよくあります。コードは通常、単一の入力セルとして貼り付けられます。便利な段階的な評価のために、複数の入力セルとして貼り付ける簡単な方法を探しています。

例えば、

a = 2;
f[x_] := x^a

Plot[f[x], {x,0,2}]

理想的には、2 つの入力セルとして貼り付けます。手動の書式設定 (つまり、元の改行) も保持する必要があります (これはデフォルトの貼り付けには当てはまりません)。

一般に、すべての入力セルを選択し (ALT クリック)、それらをテキスト エディターにコピーし、結果のテキストをノートブックにコピーすると、コピーされた元のセルとほぼ同等の結果が得られるはずです。

4

2 に答える 2

15

または....単一のセルを2つの別々のセルに分割したいポイントでCtrl+ Shift+を押すだけです。D複数の操作を 1 つのセルにグループ化する (または最初から分割しない) 方が有利な場合があります。このような分割を元に戻すには、両方のセル (必要に応じて 2 つ以上) を選択し、Ctrl+ Shift+Mをクリックして 1 つに結合します。

于 2011-11-07T18:08:56.323 に答える
1

これは単純な実装です(コードレビューもありがたいです。フロントエンドプログラミングは得意ではありません)。

(* This converts a sequence of expressions into boxes *)
Clear[makeManyBoxes]
SetAttributes[makeManyBoxes, HoldAllComplete];
makeManyBoxes[e__] := List@ReleaseHold[MakeBoxes /@ HoldComplete[e]]

(* Split a list at separator *)
split[list_, sep_] := 
 DeleteCases[Split[list, #1 =!= sep && #2 =!= sep &], {sep}] 

wr[e_] := NotebookWrite[InputNotebook[], Cell[BoxData[e], "Input"]]

CreatePalette@Button["Paste!",
  Module[{clipboard},
   clipboard = NotebookGet[ClipboardNotebook[]][[1, 1, 1]];
   If[StringQ[clipboard],

    wr /@ 
     split[ToExpression[clipboard, InputForm, makeManyBoxes], "Null"]
    ]
   ]
  ]

空の行でセルを分割します。このためには、最初に式を解析する必要があります(長い行の途中に空の行が表示された場合はどうなりModuleますか?)。ただし、解析だけでいくつかの問題が発生します。

この実装の問題:

  • コメントを削除します
  • 誤った入力を処理できません
  • フォーマットは保持されません(改行)
  • うまくいかないことが他にもいくつかあるに違いないと思います
于 2011-11-07T09:25:28.307 に答える