2013-02-15 15 views
8

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

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

नीचे एक न्यूनतम काम कर उदाहरण है।

\documentclass[12pt, english, oneside]{amsart} 

\begin{document} 

<<setup, include=FALSE, cache=FALSE, tidy=TRUE>>= 
options(tidy=TRUE, width=50) 
@ 

<<>>= 
x <- c("This","will","wrap","nicely","because","tidy","knows","how","to","deal","with","it.","So","nice","how","it","stays","in","the","box.") 
longstr <- "This string will flow off the right side of the page, because tidy doesn't know how to wrap it." 
@ 

\end{document} 

उत्तर

3

यह एक बेहद मैनुअल समाधान है, लेकिन एक जिसे मैंने उपयोग किया है।

paste0 का उपयोग करके आप स्ट्रिंग अप का निर्माण करते हैं और इससे इसे विभाजित करने का एक आसान तरीका मिलता है।

longstr <- paste0("This string will flow off the right side"," of the page, because tidy doesn't know how to wrap it.") 
+1

यह शायद आर के पक्ष में सबसे अच्छा समाधान है; यह एक आसान समस्या प्रतीत होता है लेकिन वास्तव में यह वास्तव में कठिन है; एक और समाधान लाटेक्स पैकेज लिस्टिंग का उपयोग करना है, उदा। https://github.com/yihui/knitr-examples/blob/master/066-listings-breaklines.Rnw –

+0

मुझे लगता है कि मेरे पास समय होने पर लिस्टिंग की कोशिश करनी होगी, और इस बीच पेस्ट 0() हैक का उपयोग करना होगा। धन्यवाद ब्रायन और यिहुई। – Gregory

+1

समाधान अद्यतन: मैं मैं कहाँ पता है कि यह परेशानी है और उन्हें मैन्युअल स्वरूपण हूँ कि सिर्फ मात्रा में बंद साफ मोड़ शुरू कर दिया है। यह वास्तव में बहुत अच्छी तरह से काम करता है। – Gregory

2

अन्य समाधान strwrap का उपयोग करना है।

> longstr <- "This string will flow off the right side of the page, because tidy doesn't know how to wrap it." 
> strwrap(longstr, 70) 
[1] "This string will flow off the right side of the page, because tidy" "doesn't know how to wrap it."          
> str(strwrap(longstr, 70)) 
chr [1:2] "This string will flow off the right side of the page, because tidy" "doesn't know how to wrap it." 

दुर्भाग्य से, मैं क्या यह साफ के साथ काम करेंगे पता नहीं है, लेकिन यह knitr के HTML उत्पादन के साथ बहुत अच्छी तरह से काम करता है।

1

इस उत्तर थोड़ा पार्टी के लिए देर हो चुकी है, लेकिन मैं हर हिस्सा विकल्प सूची मैं tidy = TRUE, अतिप्रवाह शामिल में पाया है कि जब भी मैं एक प्रारंभिक हिस्सा में tidy.opts = list(width.cutoff = 60) का उपयोग करें (RStudio और एक .Rnw स्क्रिप्ट का उपयोग) और फिर लाइनों की अभी भी होती है। मेरी ओवरफ्लो लाइन कोड के उन वर्गों में हैं जो ggplot2 प्लॉट बनाते हैं। परीक्षण और त्रुटि ने पाया कि यदि मैं लाइन के अंत में + के बाद कैरिज रिटर्न जोड़ता हूं, तो मुझे कोई अतिप्रवाह समस्या नहीं है। अतिरिक्त रेखा पीडीएफ में दिखाई नहीं देती है जो लाटेक्स बनाता है।

संबंधित मुद्दे