2011-11-07 14 views
8

मैं अक्सर वेबसाइटों (जैसे SO) से गणित कोड को नोटबुक में कॉपी करता हूं। कोड आमतौर पर एक इनपुट सेल के रूप में चिपकाया जाता है। मैं सुविधाजनक चरण-दर-चरण मूल्यांकन के लिए इसे कई इनपुट कक्षों के रूप में पेस्ट करने का एक आसान तरीका ढूंढ रहा हूं।मैथमैटिका कोड पेस्ट करें ताकि यह अलग इनपुट कक्षों में टूटा हुआ हो

उदाहरण के लिए,

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

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

आदर्श दो इनपुट कोशिकाओं के रूप में पेस्ट होगा। मैन्युअल स्वरूपण (यानी मूल न्यूलाइन) को अधिमानतः संरक्षित किया जाना चाहिए (यह डिफ़ॉल्ट पेस्टिंग के मामले में नहीं है)।

आम तौर पर, यदि कोई सभी इनपुट सेल (एएलटी-क्लिक) का चयन करता है, तो उन्हें एक टेक्स्ट एडिटर में कॉपी करता है, फिर परिणामस्वरूप पाठ को नोटबुक में वापस कॉपी करता है, किसी को कॉपी की गई मूल कोशिकाओं के करीब समकक्ष होना चाहिए।

उत्तर

15

या .... आप जा सकते हैं ust हिट Ctrl + शिफ्ट + डी उस बिंदु पर जहां आप अपने सिंगे सेल को 2 अलग-अलग कोशिकाओं में विभाजित करना चाहते हैं। कुछ बार एक एकल सेल में कई परिचालनों को समूहित करना फायदेमंद होता है (या इसके बजाय उन्हें शुरू करने के लिए विभाजित नहीं किया जाता है)। इस तरह के विभाजन को पूर्ववत करने के लिए, दोनों कक्षों (या यदि आप चाहें तो 2 से अधिक) का चयन करें और Ctrl + शिफ्ट + एम उन्हें एक में विलय करने के लिए क्लिक करें।

+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

अब हमें कुछ ऐसी चीज चाहिए जो एक नोटबुक निकालने और ग्राफिक्स समेत इंटरल्यूविंग इनपुट और आउटपुट सेल उत्पन्न कर सके और आउटपुट कोशिकाओं को टिप्पणी कर सके ... –

+0

@belisarius एक अच्छी शुरुआत एक imgur अपलोडर होगा। imgur [g] एसओ के लिए उचित चौड़ाई पर तर्क (पीएनजी) को रास्टराइज करना चाहिए, इसे imgur पर अपलोड करें, और पेस्ट किए जाने के लिए तैयार मार्कडाउन वापस करें: '[mma] (http://i.imgur.com/ZENa4। jpg) 'यह एक अच्छा प्रारंभिक बिंदु होना चाहिए, लेकिन मैं इसे अनुकूलित करने में विफल रहा: http://stackoverflow.com/q/5853134/695132 ** संपादित करें: ** मुझे लगता है कि मैं इसे एक प्रश्न – Szabolcs