2011-11-07 13 views
8

Webサイト(SOなど)からノートブックにMathematicaコードをコピーすることがよくあります。コードは通常、単一の入力セルとして貼り付けられます。私は便利なステップバイステップの評価のためにいくつかの入力セルとして貼り付ける簡単な方法を探しています。例えばMathematicaコードを貼り付けて別の入力セルに分割する

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

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

は、理想的には、二つの入力セルとして貼り付けることになります。手動書式(すなわち、元の改行)も好ましくは保存されるべきである(これは、デフォルト貼り付けの場合ではない)。

通常、入力セルをすべて選択(ALT-クリック)してテキストエディタにコピーし、結果のテキストをノートブックにコピーすると、コピーされた元のセルに近いものが得られます。

答えて

15

または....できることj Ctrl + Shift + Dシングルセルを2つの別々のセルに分割する時点でヒットします。いくつかの場合、複数の操作を1つのセルにグループ化する(または分割するのではなく)必要があります。このような分割を元に戻すには、両方のセルを選択し、Ctrl + Shift + Mを1つにマージします。

+2

+1、私はこのショートカットを知らなかった – Szabolcs

+1

@Szabolcsあなたはこの質問をしたのは不思議ではない。それはかなり迷惑でしょう! –

+0

+1、私はそのショートカットについても知らなかった。私はちょうどそれと一緒に住んでいて、何もするべきではないと仮定しました。 – rcollyer

0

これは単純な実装(私はコードレビューをもいただければと思い、私はフロントエンドプログラミングでよくないよ)である:それは空行で細胞を壊し

(* This converts a sequence of expressions into boxes *) 
Clear[makeManyBoxes] 
SetAttributes[makeManyBoxes, HoldAllComplete]; 
makeManyBoxes[e__] := [email protected][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"]] 

[email protected]["Paste!", 
    Module[{clipboard}, 
    clipboard = NotebookGet[ClipboardNotebook[]][[1, 1, 1]]; 
    If[StringQ[clipboard], 

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

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

問題:

  • が、それは、コメントを削除
  • 、それはフォーマット(改行)
  • 私が確信しているが保持されません
  • 間違った入力を処理することはできません
  • 間違っている可能性がある他のいくつかのものでなければならない。
+2

今、私たちはノートを抽出し、グラフィックを含む入出力セルをインターリーブし、出力セルをコメントアウトすることができるSOのポストを生成する必要があります。 –

+0

@belisarius良いスタートはimgurアップローダです。 imgur [g]はSOの適切な幅で(PNGに)引数をラスタライズし、imgurにアップロードし、ペーストする準備ができたマークダウンを返すべきです: '[mma](http://i.imgur.com/ZENa4。 jpg) 'これは良い出発点であるはずですが、私はそれを適応させることに失敗しました:http://stackoverflow.com/q/5853134/695132 **編集:**私はそれを質問すると思います – Szabolcs

関連する問題