मैं यह कैसे सुनिश्चित करूं कि मेरे सिमुलेशन के परिणाम और मेरे पेपर के परिणाम हमेशा सिंक में हों?


34

अपने एक पेपर में, मैं कुछ आंकड़ों के अलावा कुछ संख्यात्मक परिणामों को सूचीबद्ध करता हूं। मैं जो करना चाहता हूं वह यह सुनिश्चित करना है कि मेरे पेपर में संख्यात्मक परिणाम हमेशा कोड के साथ सहमत हों। अभी, मैं सीधे अपने सिमुलेशन आउटपुट से संख्यात्मक परिणामों को पेपर में कॉपी करता हूं, जो बेहद सरल और कम-तकनीकी है, लेकिन त्रुटि-प्रवण है, क्योंकि मैं परिणामों को गलत-कॉपी कर सकता हूं, या पेपर के परिणामों को सिंक के साथ सिंक करना भूल सकता हूं कोड आउटपुट।

क्या मेरे कोड में उत्पन्न परिणामों के साथ मेरे कागजात में मेरे द्वारा उद्धृत संख्यात्मक परिणाम रखने का एक अच्छा तरीका है? (यहां, मैं मानता हूं कि जब भी मैं अपने पेपर को अपडेट करना चाहता हूं, कोड को निष्पादित करना आसान और व्यावहारिक है।) ये संख्यात्मक परिणाम जरूरी नहीं कि अपने आप को सारणीबद्ध रूप में उधार दें। कभी-कभी, मेरे पास पांडुलिपियों में टेबल हैं, लेकिन अधिक सामान्यतः, मेरे पास सिमुलेशन पैरामीटर हैं जो समीकरणों में संख्याओं के रूप में सूचीबद्ध हैं । एक उदाहरण कुछ इस तरह होगा:

y=(y1,,yn)

जहाँ मैं प्रारंभिक स्थिति के तत्वों को प्रतिस्थापित करना चाहूंगा वास्तविक मापदंडों के साथ मैं एक सिमुलेशन में उपयोग करता हूं जो संख्यात्मक रूप से साधारण अंतर समीकरणों की एक प्रणाली को एकीकृत करता है। इस तरह के उदाहरण के रूप में एक बंद डेटा के लिए एक तालिका का उपयोग करना overkill और आवश्यक से अधिक स्याही की तरह लगता है।y

मुझे लगता है कि आंकड़े एक आसान मामला है: जब भी दस्तावेज़ "बिल्ट" (लाटेक्स स्रोत से, मार्कडाउन, आरएसटी, आदि) है, तो कोड निष्पादित करके बिल्ड प्रक्रिया शुरू करें। हालाँकि, अगर लोगों को मेरे पेपर के साथ मेरे सिमुलेशन द्वारा उत्पन्न आंकड़े रखने के लिए बेहतर सुझाव हैं, तो मुझे उन्हें सुनना अच्छा लगेगा।

जवाबों:


14

जैसा कि कुछ टिप्पणियों ने सुझाव दिया है, यह दृष्टिकोण लंबे समय से Sweaveऔर हाल ही में निर्माण करके आर समुदाय में विकसित किया गया है knitr। जाहिर है कि इस दृष्टिकोण को फिलहाल भाषा-विशिष्ट होने का नुकसान है, लेकिन इसका फायदा यह है कि इसका नियमित रूप से अकादमिक पत्रों में उपयोग किया जाता है।

वास्तविक प्रकाशनों में स्वेव का उपयोग

  • जैव सांख्यिकी के जर्नल इन प्रस्तुतियाँ को प्रोत्साहित करती है, और शैक्षिक पेपर जिसमें reproduciblity संपादक कोड और डेटा चलाने के लिए और ये परिणाम प्राप्त करने में सक्षम रहा है पर एक kitemark पत्र "आर" देता है।
  • आर-जर्नल में अनिवार्य रूप से सभी प्रकाशन स्वेव पर बनाए गए हैं।

बेशक आमतौर पर Sweave / knitr उपयोगकर्ता अधिकांश पत्रिकाओं को अंतिम आउटपुट देते हैं, व्यक्तिगत विश्वास के साथ कि विधि वास्तव में परिणामों को पुन: पेश करती है। इसी तरह स्वाइप का इस्तेमाल अक्सर पेशेवर बातचीत आदि के लिए स्लाइड बनाने के लिए किया जाता है।

उपयोगी विशेषताएं

व्यवहार में उपयोगी होने के लिए, ऐसी प्रणाली में कुछ विशेषताएं होनी चाहिए। उपयोगकर्ताओं के एक महत्वपूर्ण द्रव्यमान के साथ, इनमें से कई अच्छी तरह से विकसित हैं knitr। कुछ मुख्य बातें:

  • भंडारित करता है। मार्कटैड या लेटेक्स जैसे प्रारूप में लिखना जो कि आउटपुट को देखने के लिए संकलित किया जाना चाहिए, यह कोड सहित असंभव बनाता है जब परिणाम कैश नहीं किया जा सकता है। चतुर कैशिंग knitrवास्तव में शुद्ध में काम करने की तुलना में गहन कोड को डीबग करना आसान बनाता है R, क्योंकि सफल विखंडू को फिर से चलाना आवश्यक नहीं है।

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

  • समुदाय। शायद होमब्रेव्ड समाधान पर इस दृष्टिकोण का सबसे सम्मोहक लाभ मॉडल से परिचित लोगों की संख्या है और इसे सुधारने की कोशिश कर रहा है।

  • अन्य सुविधाओं के बहुत अच्छे उदाहरण निट वेबपेज डेमो पर पाए जा सकते हैं , जिसमें "लाइटवेट प्रकाशन" या वेब पर साझा करने के उपकरण शामिल हैं। इनमें से कई विशेषताएं इस दृष्टिकोण को किसी व्यक्ति के सामान्य वर्कफ़्लो के साथ अधिक संगत बनाने में मदद करती हैं, बजाय इसके कि वह केवल पांडुलिपि लिखते समय कुछ करे।

ऐतिहासिक फुटनोट।

नुथ की "साक्षर प्रोग्रामिंग" में निहित है, जैसा कि नाम से पता चलता है, जोर काफी अलग है, क्योंकि साक्षर प्रोग्रामिंग सॉफ्टवेयर कोड और प्रलेखन को जोड़ने पर केंद्रित है (आर समुदाय में जो भूमिका निभाई जाती है Roxygen, जो इसकी जड़ों को एक अलग शाखा तक पहुंचाती है "साक्षर प्रोग्रामिंग ट्री")।

उसके पार जाना

सिद्धांत रूप में, हम डायनेमिक दस्तावेज़ से बहुत कुछ पूछ सकते हैं, जैसे कि इनपुट को बदलने के लिए रीडर की क्षमता और आउटपुट को बिना संपादित किए और पूरे दस्तावेज़ को फिर से संकलित किए बिना देखने के लिए, उदाहरण के लिए, एक इंटरैक्टिव ऑनलाइन प्लेटफ़ॉर्म का उपयोग करना। XDynDocs इस दिशा में एक कदम हो सकता है।

अन्य दृष्टिकोण

  • शायद dexy.it पर नजर रखना चाहते हैं
  • थोड़े अलग दृष्टिकोण में: http://www.runmycode.org/ पर प्रकाशनों से जुड़े अर्थशास्त्र पत्रों के होस्ट कोड की बढ़ती संख्या , जो क्लाउड पर विश्लेषणों को फिर से चलाएगा, और कस्टम इनपुट मापदंडों या कस्टम इनपुट डेटा की अनुमति देगा।

कार्ल, मैं थोड़ी देर के लिए आपकी वेबसाइट का अनुसरण कर रहा हूं, और निट के साथ आपका दृष्टिकोण मेरे प्रश्न के लिए प्रेरणाओं में से एक था। मैं थोड़ी देर के लिए छद्म का पालन भी कर रहा हूं क्योंकि ज़ेड शॉ अपनी पुस्तक हाउ टू लर्न पायथन द हार्ड वे ( गीट रेपो देखें ) के लिए स्रोत बनाने के लिए इसका उपयोग करता है । अन्य साक्षर प्रोग्रामिंग दृष्टिकोणों के विपरीत मैं डीआईएक्स के बारे में जो पसंद करता हूं वह यह है कि कोड और टेक्स्ट को कपल रूप से युग्मित किया जाता है, जिससे डिबगर का उपयोग बंद हो जाता है।
ज्योफ ऑक्सीबेरी

जेफ, शांत, टिप्पणियों के लिए धन्यवाद! अन्ना नेल्सन डिकोडिंग में भी एक बड़ा विश्वास है। उपयोगकर्ता कोड बाह्यकरण , या नए spin()फ़ंक्शन के साथ नाइट्र में डिकॉउलिंग को पूरा कर सकते हैं । व्यक्तिगत रूप से मुझे लगता है कि साक्षर प्रोग्रामिंग के बारे में ग्रेग विल्सन की शिकायतें बहुत दिनांकित हैं। मेरे पास वही भयानक अनुभव था जो वह अब के साथ वर्णन करता है, लेकिन यह कि डीबगिंग सिर्फ आधुनिक उपकरणों में मौजूद नहीं है। साक्षर सीआई के लिए doxygen का उपयोग करें। कैटरिंग और एनवायरनमेंट हैंडलिंग के लिए R थान की तुलना में कुछ भी आसान है तो निट्रा।
cboettig

20

आप जो मांग रहे हैं, वह " एक्सेसेबल पेपर" की एल्सीवियर भव्य चुनौती है । जबकि कई दृष्टिकोणों की कोशिश की गई है, कोई भी उतनी सम्मोहक नहीं है जितना कि लेखक सुझाव दे सकते हैं। यहाँ तकनीकों के कुछ उदाहरण दिए गए हैं।

मेडागास्कर परियोजना आपके दृष्टिकोण को लेती है, मेक स्क्रिप्ट के अंदर सिमुलेशन रन होते हैं जो एक साथ आंकड़े और कागज का उत्पादन करते हैं।

आईपीथॉन नोटबुक एक दस्तावेज प्रदान करता है जिसे आप पढ़ सकते हैं और अपने दिल की सामग्री के लिए आंकड़े तैयार कर सकते हैं। (मैंने शब्द प्लगइन्स, गणितज्ञ, और कई अन्य समाधान एक ही फैशन में इस्तेमाल किए हैं)

VisTrails एक सेवा उन्मुख वास्तुकला दृष्टिकोण का उपयोग करता है और एक " प्रोवेंस " या "वर्कफ़्लो" प्रबंधक प्रदान करता है। मूल रूप से आप हुक को कोड में दर्ज करते हैं फिर एक कार्य प्रवाह या प्रयोग को डिज़ाइन करते हैं जो आपके काम को पुन: पेश करता है। इसका उपयोग कई प्रकार के कोड, यहां तक ​​कि एचपीसी क्लस्टर पर भी किया गया है। इस दृष्टिकोण के साथ आपके पास प्रयोगों को फिर से चलाने का एक तरीका होगा।

वहाँ इन प्रकार के टन वहाँ से बाहर हैं, लेकिन उन तीन मैं के साथ प्रभावित थे रहे हैं। इसकी एक कठिन समस्या और एक मेरा मानना ​​है कि हम वास्तव में संबोधित करने के करीब नहीं हैं। हम अपने कोड के साथ अपने कोड को जारी करने के लिए लोगों को भी नहीं प्राप्त कर सकते हैं, हम उनसे परिणामों को पुन: पेश करने की उम्मीद कैसे कर सकते हैं = पी


इसी तरह की एक नस में स्वैव है , जो कुछ ऐसा नहीं है जिसका मैं उपयोग करता हूं लेकिन अवधारणा में पेचीदा है।
dmckee

मेडागास्कर परियोजना ऐसा लग रहा था कि जब मैं इसके लेखकों में से एक की बात सुनता हूं तो यह दिलचस्प हो सकता है। मैंने वास्तव में इसका उपयोग करने की कोशिश नहीं की है।
केन

@ डमी: मुझे पता है कि जिन लोगों को स्वाइप और नाइट्र के साथ अच्छी सफलता मिली है । मैं उन्हीं कारणों के लिए साक्षर प्रोग्रामिंग दृष्टिकोणों की लीरी हूं, जो ग्रेग विल्सन सॉफ्टवेयर कारपेंटरी पर देता है : कागज और कोड बहुत कसकर युग्मित होते हैं, जिससे कोड पर डिबगर चलाना कठिन हो जाता है (और प्रूफिंग के तरीके से मिल सकता है ये पाठ)।
ज्योफ ऑक्सीबेरी

मैं इस उद्देश्य के लिए स्वेव का उपयोग करता हूं, यह बहुत अच्छी तरह से काम करता है और लाइक्स के साथ अनुकूल है। ऑर्ग-मोड और भी बेहतर है और अधिकांश सामान्य भाषाओं का समर्थन करता है।
डेविड लेबॉयर

13

मुझे इस समस्या के अन्य लोगों के समाधान का उपयोग करने में बहुत अधिक सफलता नहीं मिली है। मैं आमतौर पर बस कुछ सरल चाहता हूं जो मेरे लिए काम करता है और काम हो जाता है। यह अंत करने के लिए, मैं आम तौर पर एक अजगर स्क्रिप्ट लिखने की कोशिश करता हूं जो सभी परिणामों को चलाने, आउटपुट पार्स करने के साथ-साथ आंकड़े / तालिकाओं के निर्माण के प्रभारी हैं।

मैं डेटा कोड जनरेट करने के लिए अपने कोड लिखता हूं जिसमें कुछ पाठ प्रारूप में परिणाम होते हैं। आप आउटपुट फ़ाइल के अस्तित्व के लिए पहले परीक्षण में अपनी स्क्रिप्ट में इन परिणामों को फिर से पढ़ने से बचा सकते हैं (उदाहरण के लिए os.path.isfile () का उपयोग करके अजगर में)। यदि आप अपने परिणामों को फिर से निकालना चाहते हैं, तो बस डेटाफाइल्स को हटा दें। यदि डेटाफ़ाइल्स मौजूद है, तो मैं इन फ़ाइलों का पार्सर चलाता हूं। इसके लिए, नियमित अभिव्यक्ति के लिए अजगर मॉड्यूल बहुत उपयोगी है (पुनः)।

फिर पार्स किए गए आउटपुट से मैं आंकड़े या टेबल बनाता हूं। लेटेक्स में तालिकाओं के लिए आप टेबल को एक अलग फाइल में बनाने के लिए कोड लिख सकते हैं (मैं एक .tbl एक्सटेंशन का उपयोग करता हूं) और फिर इसे अपनी लेटेक्स फाइल में शामिल करें। वे मेरे लिए 1 पायथन लिपि का उपयोग करना चाहते हैं। यदि मेरे पास कई हैं, तो मैं बाद में सोच रहा हूं कि कौन सा है और वे क्या करते हैं। यदि यह वर्णन बहुत अस्पष्ट है तो मैं आपको कुछ उदाहरण भेज सकता हूं।


1
मैं पहले ही आंकड़ों के लिए इस तरह की बात करता हूं। हालाँकि, मैं जो पत्र लिख रहा हूँ, उसमें टेबल्स एक अप्राकृतिक प्रारूप होगा जिसमें डेटा को प्रस्तुत करना है। अक्सर बार, मैं वास्तव में एक ओडीई के लिए प्रारंभिक स्थिति को शामिल करना चाहता हूं (इसलिए वास्तव में, 4-6 नंबर की तरह कुछ, कॉमा द्वारा फैलाया गया), या समीकरण के दाईं ओर के हिस्से के रूप में संख्याओं की एक पूरी मैट्रिक्स। मुझे तालिकाओं के लिए आपका विचार पसंद है। उन मामलों के लिए जिनका मैंने उल्लेख किया है, मुझे लगता है कि उन्हें टेबल के रूप में पुन: स्वरूपित करना अप्राकृतिक होगा, और मैं डेटा को अधिक प्राकृतिक प्रारूप में शामिल करना चाहूंगा।
ज्योफ ऑक्सीबेरी

नाथन, क्या आप उदाहरण पोस्ट करना चाहेंगे? मैं उसी दृष्टिकोण का उपयोग करता हूं, सिवाय इसके कि मैं पाठ फ़ाइलों को गिट में करता हूं, और परिणाम का प्रबंधन करने के लिए गिट का उपयोग करता हूं। मेरे पास प्लॉट / टेबल बनाने के लिए पायथन स्क्रिप्ट हैं। मेरे पास एक स्क्रिप्ट प्रति प्लॉट या टेबल है।
ओन्देजे íertík

आप कमांड का उपयोग करके सीधे लेटेक्स पर शेल स्क्रिप्ट के आउटपुट को भी पाइप कर सकते हैं \input{|"path-to-script.py"}। मुझे लगता है कि आप सभी मापदंडों को एक ही अजगर (या जो भी भाषा आपकी पसंदीदा है) फ़ाइल में डालना बेहतर है और इसे एक्सेस करने के लिए कमांड लाइन पैरामीटर का उपयोग करें \input{|"path-to-script.py param-name"}। इस मामले में आप सिमुलेशन चलाने के लिए अन्य स्क्रिप्ट में परम फ़ाइल शामिल कर सकते हैं। हालाँकि, यह संकलन को धीमा बनाता है और इसमें कुछ अन्य नकारात्मक बिंदु हैं।
हीलियम


7

इससे भी अधिक महत्वपूर्ण, मेरी राय में, यह सुनिश्चित कर रहा है कि आप यह पता लगा सकते हैं कि एक महीने या एक साल में खरोंच से अपने सभी परिणाम कैसे प्राप्त करें (उदाहरण के लिए, जब रेफरी आपसे कुछ जोड़ने या संशोधित करने के लिए कहें)। उस उद्देश्य के लिए, मैं जो भी करता हूं उसमें सभी परिणामों को पुन: पेश करने के बारे में बहुत विस्तृत निर्देशों के साथ एक पाठ फ़ाइल शामिल है। यह सबसे अच्छा है अगर आप किसी और (जैसे सह-लेखक) की कोशिश करके इनका परीक्षण करते हैं। मेरा सुझाव है कि आप इन निर्देशों (और अपने सभी कोड) को रेफरी और पाठकों को भी प्रदान करते हैं।

यहाँ एक उदाहरण है (वास्तव में मेरे सह-लेखक एरन अहमदिया द्वारा तैयार किया गया है)।


मैंने ऐसा पहले किया है (अपनी खुद की विवेक के लिए), और शुक्र है, यह तब बंद हो गया जब मेरे सलाहकार ने मुझे फिर से उत्पन्न करने और फिर से जांचने के लिए कहा। जब से मैंने एक स्क्रिप्ट के स्रोत कोड को डंपिंग में बदल दिया है, जो मेरे ड्राफ्ट के परिशिष्ट में सब कुछ चलाता है, तो यह वहां है, मुझे पता है कि मैंने क्या किया, और मैं सभी संख्याओं और आंकड़ों को प्राप्त करने के लिए एक बटन पर क्लिक कर सकता हूं।
ज्योफ ऑक्सीबेरी

स्क्रिप्ट अभी कोई इंस्टॉलेशन नहीं करती है, क्योंकि यह सिर्फ MATLAB स्क्रिप्ट है। फ़ंक्शन प्रलेखन में, यह तृतीय-पक्ष पैकेजों पर निर्भरता को सूचीबद्ध करता है। उन तृतीय-पक्ष पैकेजों, बदले में, दोनों को उन्हें स्थापित करने के तरीके पर स्पष्ट दस्तावेज हैं (और शुक्र है, सक्रिय रूप से समर्थित भी हैं, महान डेवलपर्स हैं, और मेलिंग सूचियां सक्रिय हैं)।
ज्योफ ऑक्सीबेरी

6

बाबेल के साथ मिलकर एमाक्स का ऑर्गमोड हासिल करता है। बैबेल विभिन्न प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं से कोड स्निपेट निष्पादित कर सकता है, उदाहरण के लिए, यह सिमुलेशन डेटा युक्त फ़ाइल को खोल सकता है और इसे ऑर्गमोड में एक तालिका में डाल सकता है, जिसे LaTeX (और कई अन्य स्वरूपों) में निर्यात किया जा सकता है। ऑर्गमोड में सभी प्रमुख कॉम्बो के लिए उपयोग होने में काफी समय लगता है, लेकिन एक बार जब यह सब कुछ स्वचालित होता है।


मुझे ओआरजी-मोड पसंद है; मैं इसका उपयोग रूपरेखा के लिए करता हूं। मैं इसे Babel के साथ प्रयोग नहीं किया है। मुझे इसे आज़माना होगा।
ज्योफ ऑक्सबेरी

यहाँ जनवरी 2012 जे स्टेट से एक उत्कृष्ट अवलोकन है। सॉफ्टवेयर jstatsoft.org/v46/i03/paper
डेविड लेबॉयर

मैंने एक ट्यूटोरियल लिखा जो दिखाता है कि यूरोपीय भौतिक जर्नल ए (ईपीजे ए) से लाटेक्स टेम्पलेट को ऑर्ग-मोड फ़ाइल में कैसे परिवर्तित किया जाए।
Melioratus

4

यदि आपका सभी कोड सस्ता है तो आप निम्न की तरह कुछ कम तकनीक कर सकते हैं:

आप अपने दस्तावेज़ों को स्वरूपित स्ट्रिंग्स के साथ टेम्पलेट दे सकते हैं ताकि वे इस तरह दिखें

"we observed a %(fractional_improvement)s increase in ..."

पाइथन स्क्रिप्ट्स हैं जो इस तरह दिखती हैं

results = {"alpha"                  : run_alpha_computation(...),
           "fractional_improvement" : run_fi_computation(...), 
           ...}

और फिर कुछ इस तरह से करें

for fn in filenames:
    file = open(fn);      s = file.read();       file.close()
    file = open(fn, 'w'); file.write(s%results); file.close()

फिर आप इसे मेकफाइल में लपेट सकते हैं।


जब मैंने यह प्रश्न लिखा था, तो मेरा पहला विचार था कि आपके द्वारा प्रस्तावित प्रस्ताव की तरह एक समाधान है। मैं मूल रूप से कुछ कम-तकनीक के बारे में सोच रहा था जैसे कि मैक्रो प्रीप्रोसेसर का उपयोग करना, लेकिन पायथन संभवतः एक बेहतर (और निश्चित रूप से अधिक पठनीय) दृष्टिकोण है, फिर एक बिल्ड सिस्टम परिणामों के वृद्धिशील उत्थान को संभाल सकता है।
ज्योफ ऑक्सबेरी

वास्तव में यह अजगर सर्वर पृष्ठों की तरह कुछ का एक बहुत ही बुनियादी कार्यान्वयन है। ऑटो-जनित सामग्री का विचार कुछ समय के लिए वेब समुदाय में रहा है। यह देखने के लिए अच्छा होगा कि यह अकादमिया की ओर पलायन कर जाए।
MRocklin

माना। जिनजा 2 का उपयोग आपके द्वारा सुझाए गए कार्यों के लिए किया जा सकता है। वास्तव में, यह वही है जो dexy करता है, लेकिन शांत फिल्टर के एक समूह के साथ जो सिंटैक्स हाइलाइटिंग और अन्य विविध कार्यों को भी संभालता है।
ज्योफ ऑक्सीबेरी

4

यदि आप LaTeX का उपयोग कर रहे हैं, तो एक अपेक्षाकृत कम-तकनीकी समाधान यह है कि आपका कोड एक फ़ाइल को बाहर थूक दे (या फिर अपने कोड के आउटपुट से फ़िल्टर करने के लिए एक स्क्रिप्ट का उपयोग करें) जिसमें इस तरह की पूरी पंक्ति होती है:

\newcommand{\myresults1}{<value>}

फिर आप \inputउस फ़ाइल को अपने दस्तावेज़ में जोड़ने के लिए कमांड का उपयोग कर सकते हैं , और मूल्यों को रखने के लिए परिभाषित कमांड का उपयोग कर सकते हैं।


2

मैं एल्सेवियर के लिए काम करता हूं। मेरी कंपनी ने पत्रकारों के मुद्दों में कोलाज फ्रेमवर्क (एक्ज़ीक्यूटेबल पेपर ग्रैंड चैलेंज के जवाब में विकसित) का उपयोग करना शुरू कर दिया है ताकि लेखकों को अपने लेख के साथ निष्पादन योग्य कोड का हिस्सा प्रकाशित करने में सक्षम बनाया जा सके। यह सुविधा पाठकों के लिए लेख में रिपोर्ट किए गए परिणामों को पुन: पेश करना और अपने स्वयं के अनुसंधान के लिए प्रकाशित सामग्री का पुन: उपयोग करना आसान बनाती है। कोलाज़ ओपन-सोर्स और मालिकाना सॉफ्टवेयर की एक विस्तृत विविधता का समर्थन करता है; अधिक जानकारी यहाँ जानकारी वीडियो में और कोलाज़ संलेखन पर्यावरण वेबसाइट पर देखी जा सकती है ।


दूसरी कड़ी गलत चीज की है।
डेविड केचेसन

@ हेलके कोर्स: क्या आपका मतलब इस लिंक को डालना है: collage.elsevier.com ?
पॉल

@Paul: मैंने संपादन किया; मूल दूसरा लिंक कोलाज़ Google समूह के लिए था। हो सकता है कि एक बेहतर लिंक खुद कोलाज होगा, लेकिन मेरा ध्यान उन हिस्सों को हटाने के दौरान (ज्यादातर) पोस्ट के अच्छे इरादों को संरक्षित करने की कोशिश करना था, जो इसे ध्वनि प्रचारक बनाते थे। जैसा कि आप फिट देखते हैं पोस्ट को संपादित करने के लिए स्वतंत्र महसूस करें।
ज्यॉफ ऑक्सीबेरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.