2011-11-09 17 views
7

कहें कि मेरे पास .Rnw फ़ाइल है जिसमें सामान्य कोडटेक्स आर कोड भाग के साथ मिश्रित है। (मैं विशेष रूप से .Rnw स्लाइड्स दस्तावेज़ को परिवर्तित करने में रूचि रखता हूं, लेकिन यह प्रश्न किसी भी .Rnw दस्तावेज़ पर लागू होता है)। अब मैं इसे एक फ़ाइल में रूपांतरित करना चाहता हूं जिसमें सभी आर कोड, प्लस सभी टेक्स्ट जो आमतौर पर लाटेक्स द्वारा उत्पन्न किए जाएंगे, आर टिप्पणियां। दूसरे शब्दों में, मैं जो कार्यक्षमता चाहता हूं वह Stangle() के समान है, लेकिन मैं यह भी चाहता हूं कि लाटेक्स के सभी टेक्स्ट भाग को सादे पाठ में परिवर्तित किया गया है जिसके परिणामस्वरूप आर। फ़ाइल।स्वीवे, आर, बीमर: आरटीडब्लू फाइल में आरटीडब्लू फाइल को आर टिप्पणियों में कैसे परिवर्तित करें?

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

किसी के पास यह कैसे करना है इस पर कोई विचार है? अग्रिम में धन्यवाद।

उत्तर

8

regex का उपयोग कर एक दृष्टिकोण यहां दिया गया है। अभी भी कुछ समस्याएं हैं जो रहती हैं, और मैं एक सूची बनाए रखूंगा जो संकल्पों के साथ अपडेट की जाएगी।

# READ LINES FROM RNW FILE 
lines <- readLines('http://users.stat.umn.edu/~charlie/Sweave/foo.Rnw') 

# DETECT CODE LINES USING SWEAVE CHUNK DEFINITIONS 
start_chunk <- grep("^<<.*=$", lines) 
end_chunk <- grep("^@" , lines) 
r_lines  <- unlist(mapply(seq, start_chunk + 1, end_chunk - 1)) 

# COMMENT OUT NON CODE LINES AND WRITE TO FILE 
lines[-r_lines] <- paste("##", lines[-r_lines]) 
writeLines(lines, con='codefile.R') 

मुद्दों शेष:

  1. <<chunk_name>>
+0

का उपयोग कर हिस्सा अन्य हिस्सा अंदर बुलाया के साथ अच्छी तरह से निपटने के नहीं है कि आप हिस्सा मुद्दा नामकरण, की तरह ठीक करने के और अधिक जटिल regex को परिभाषित करना चाहते हो सकता है: '"^<<.*>> =? $ "' प्रारंभिक खंड के लिए। लेकिन यह बहुत साफ दृष्टिकोण है, वैसे भी ... 'मैप्ली' का अच्छा उपयोग। – aL3xa

+0

यह एक साफ दृष्टिकोण है, और हाँ, 'मैप्ली' का अच्छा उपयोग। एक और चीज जो अच्छी होगी, सभी 'लाटेक्स' मार्कअप ('\ start {frame}', '\ frametitle', ... जैसे चीजों से छुटकारा पाने के लिए, स्वच्छ, पूरी तरह से पाठ्य टिप्पणियों का उत्पादन करने के लिए - कम से कम, सभी लाटेक्स कीवर्ड से छुटकारा पाने के लिए एक शुरुआत होगी। मुझे लगता है कि कोई खाली तारों के साथ लाटेक्स के सभी आरक्षित शब्दों को प्रतिस्थापित करने के लिए 'रेगेक्स' लिख सकता है। यह एक शुरुआत होगी, लेकिन मुझे आशा है कि लाटेक्स पार्सर का लाभ उठाने का कोई तरीका है, और किसी भी तरह * टेक्स्ट * को कैप्चर करें जो लेटेक्स उत्पन्न होता। –

+0

एक अन्य एसओ प्रश्न (http://stackoverflow.com/questions/530121/how-do-i-convert-latex-to-plain-text-ascii) से लाटेक्स-टू-टेक्स्ट समाधानों में से एक के साथ @ रामनाथ के विचार को जोड़ना मुझे वह मिल सकता है जो मैं चाहता हूं। –