2015-03-15 18 views

उत्तर

43

के माध्यम से ब्राउज़ जवाब @Ben Bolker द्वारा प्रदान की लिंक पर दिया एक विकल्प हो प्रतीत नहीं होता है: यदि आप HTML का चयन

Roses are <span style="color:red">red</span>, 
violets are <span style="color:blue">blue</span>. 

काम करता है (ioslides) आउटपुट प्रारूप के रूप में।

हालांकि, यदि आप आउटपुट प्रारूप के रूप में पीडीएफ (बीमर) का चयन करते हैं तो यह काम नहीं करता है।

#Color Format 
colFmt = function(x,color){ 
    outputFormat = opts_knit$get("rmarkdown.pandoc.to") 
    if(outputFormat == 'latex') 
    paste("\\textcolor{",color,"}{",x,"}",sep="") 
    else if(outputFormat == 'html') 
    paste("<font color='",color,"'>",x,"</font>",sep="") 
    else 
    x 
} 

तो फिर तुम यह इनलाइन की तरह उपयोग कर सकते हैं: `r colFmt("MY RED TEXT",'red')`, और रंग का पाठ रेंडर किया जाएगा मैं इस तरह एक समारोह बनाने

Roses are \textcolor{red}{red}, violets are \textcolor{blue}{blue}. 
+1

क्या आप पीडीएफ भाग को स्पष्ट कर सकते हैं - मैं इसे काम नहीं कर सकता: 'अपरिभाषित नियंत्रण अनुक्रम \ textcolor'। आदेश 'pandoc ./main.md -o।/Main.pdf' है। मुख्य में पाठ सबसे सरल '\ textcolor {red} {red}' है। आप किस अनुवाद कमांड का उपयोग करते हैं? – Ayrat

+0

प्रिय अराट, मैं RStudio के भीतर मार्कडाउन का उपयोग कर रहा हूं, इसलिए मैं पैंडोक कमांड से बहुत परिचित नहीं हूं। यह शायद रंग कमांड से संबंधित नहीं है, लेकिन आपके सिस्टम सेटअप के साथ एक समस्या है। उदाहरण के लिए देखें, यहां: http://stackoverflow.com/questions/37156696/undefined-control-sequence-error-while-converting-from-markdown-to-pdf-with-pand –

21

: यदि आप एक पीडीएफ बनाने के लिए चाहते हैं, LaTeX सिंटैक्स का उपयोग करें चाहे लेटेक्स या एचटीएमएल दस्तावेज़ पर काम कर रहे हों।

+0

अप-टू-डेट Rstudio का उपयोग करना और पीडीएफ आउटपुट के लिए 'rmarkdown :: रेंडर' यह मेरे लिए tex फ़ाइल में' $ \ backslash $ 'में परिवर्तित हो जाता है। इस प्रकार लेटेक्स के रूप में व्याख्या करने के बजाय सचमुच स्ट्रिंग को प्रिंट करना। बहुत कष्टप्रद। आपके पास कोई विचार है? – Midnighter

+0

किसी भी मौके से, क्या यह तालिका में xtable का उपयोग कर रहा है? –

+0

जैसा कि आपने पता लगाया है, हां वास्तव में, मेरे उत्तर के अनुसार 'xtable' के अंदर। – Midnighter

3

मैंने मूल रूप से निकोलस हैमिल्टन के उत्तर का उपयोग किया लेकिन क्योंकि मैंने xtable और print का उपयोग किया, मुझे कुछ लेटेक्स अनुक्रमों से बचने में कुछ समस्याएं थीं। अर्थात्, \\textcolor को $\backslash$textcolor में परिवर्तित किया जा रहा है। मैं सही निम्नलिखित तरीके से प्रतिबंध लगाया परहेज द्वारा इसे पाने के लिए कर रहा था:

```{r results='asis'} 
tbl = data.frame(a = letters[1:10], b = 1:10/10) 
tbl$b = ifelse(tbl$b < 0.5, colFmt(tbl$b, "red"), colFmt(tbl$b, "green")) 
print(xtable(tbl), sanitize.text.function = identity) 
``` 

मैं तो जाने के लिए और मैन्युअल रूप से सही ढंग से लागू किया गया था % लेकिन कम से कम \textcolor की तरह कुछ वर्ण स्वच्छ था। बेशक, यह आपके स्वयं के sanitize समारोह का विस्तार करके टाला जा सकता है।

+0

जैसा कि मुझे संदेह था। 'प्रिंट (xtable (tbl), sanitize.text.function = पहचान)' –

+0

'sanitize.text.function = पहचान' आपको एक छोटा इनलाइन फ़ंक्शन बनाने के लिए सहेजता है –

+0

मैंने सोचा था कि आपकी पिछली टिप्पणी पर्याप्त थी लेकिन मैंने अपना संपादन किया है बेहतर अभ्यास को प्रतिबिंबित करने के लिए उत्तर। – Midnighter

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