2013-02-04 22 views
9

मैं रस्टूडियो में एक मार्कडाउन दस्तावेज़ पर काम कर रहा हूं जो पर्ल और आर की तुलना करता है। मैं क्या करना चाहता हूं करने में सक्षम होने के लिए इस्तेमाल होने वाली भाषा के आधार पर अलग-अलग कोड ब्लॉक पृष्ठभूमि रंग हैं । एक उदाहरण के लिएknitr/markdown में कोड ब्लॉक रंग बदलें

आर कोड ब्लॉक

```{r} 
dog <- 1 
cat <- 2 
dog + cat 
``` 

पर्ल कोड ब्लॉक

```{r, engine='perl'} 
$dog = 1; 
$cat = 2; 
print $dog + $cat; 
``` 

यदि आप उपरोक्त कोड के साथ knitr का उपयोग कर एक html फ़ाइल उत्पन्न, आर कोड ब्लॉक है ठोस ग्रे पृष्ठभूमि जबकि कोड ब्लॉक से आउटपुट में एक सफेद/पारदर्शी पृष्ठभूमि होती है।

हालांकि, पर्ल कोड ब्लॉक और आउटपुट में एक सफेद/पारदर्शी पृष्ठभूमि है जो भ्रमित लगती है। मेरी आशा है कि मार्कडाउन/बुनाई में ऐसा करने का एक शानदार तरीका है।

उत्तर

4

ऐसा इसलिए होता है क्योंकि RStudio केवल js और css को बंडल करता है जब आप knit2html चलाते हैं तो आर कोड को हाइलाइट करने के लिए आवश्यक है। आप अपनी आरएमडी फ़ाइल में निम्नलिखित सीएसएस और जावास्क्रिप्ट को शामिल करके अन्य भाषाओं के लिए सिंटैक्स हाइलाइटिंग सक्षम कर सकते हैं।

<link rel="stylesheet" href="http://yandex.st/highlightjs/7.3/styles/default.min.css"> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
<script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script> 
<script> 
$(document).ready(function() { 
    $('pre code').each(function(i, e) {hljs.highlightBlock(e)}); 
}); 
</script> 

यह अभी भी अलग पृष्ठभूमि की समस्या का समाधान नहीं है, क्योंकि दोनों ही विषय सीएसएस द्वारा नियंत्रित कर रहे हैं। हालांकि आप आउटपुट के लिए एक अलग पृष्ठभूमि प्रदान करने के लिए कस्टम सीएसएस शामिल कर सकते हैं।

अद्यतन:

निम्नलिखित अतिरिक्त लाइनें जोड़ने में मदद मिलेगी समायोजित उत्पादन पृष्ठभूमि रंग (मैं lightyellow को चुना है, लेकिन जैसा कि वांछित आप अनुकूलित कर सकते हैं)

<style> 
pre code.bash { 
    background: lightyellow; 
} 
</style> 
+0

इस उपयोगी पोस्ट के लिए धन्यवाद। क्या आपको पता है कि गैर-आर कोड भाग के लिए केवल लिंक किए गए स्टाइलशीट ** का उपयोग करना संभव है?RStudio के साथ बंडल किए गए आर कोड को 'light.js' द्वारा प्रदान की गई चीज़ों से बेहतर है। –

4

मुझे लगता है कि एक सवाल है RStudio के लिए। फिलहाल, यह केवल दो भाषाओं का समर्थन करता है (सिंटैक्स हाइलाइटिंग के लिए) - आर और सी ++; शायद आप उन्हें एक फीचर अनुरोध दर्ज कर सकते हैं, या आप पांडोक जैसे अन्य टूल्स के साथ अपना मार्कडाउन आउटपुट प्रस्तुत कर सकते हैं, या सिर्फ एमडी फाइलों को गीथब पर डाल सकते हैं जो पर्ल के लिए सिंटैक्स हाइलाइटिंग भी करता है, उदा। उदाहरण 028-engine-perl.md

+0

धन्यवाद, मैंने rstudio समर्थन लोगों से बात की थी वे बहुत उपयोगी थे। – iantist

7

मैंने यहुई के सुझाव के अनुसार रुस्तुडियो समर्थन से बात की। वे ने कहा कि मैं अनिवार्य रूप से निम्नलिखित आर कोड के साथ अपने ही शैली पत्रक का उपयोग करने के आर बता सकते हैं:

options(rstudio.markdownToHTML = 
function(inputFile, outputFile) {  
require(markdown) 
markdownToHTML(inputFile, outputFile, stylesheet='custom.css') 
} 
) 

'custom.css' अपने काम निर्देशिका में होना चाहिए। मैंने संशोधित करने के लिए एक सेक्शन देखने के लिए आर स्टूडियो की सीएसएस शीट (link) डाउनलोड की। शैली पत्रक के भीतर कोड

code.r, code.cpp { background-color: #F8F8F8;} 

का एक ब्लॉक है के रूप में Yihui इस होगा केवल समर्थन आर और सी के लिए रंग कोडित ब्लॉक ++ बताया। निम्नलिखित में त्वरित परिवर्तन में perl शामिल हैं: code.r, code.cpp, code.perl {background-color: # F8F8F8;} या code.r पृष्ठभूमि ब्लॉक के नीचे निम्न को जोड़कर एक अलग रंग बनाएं।

code.perl { 
background-color: #B53389; 
} 
+1

ध्यान दें कि यह दृष्टिकोण अभी भी सिंटैक्स हाइलाइट पर्ल कोड नहीं करेगा, क्योंकि RStudio द्वारा डाला गया जावास्क्रिप्ट केवल आर और सीपीपी कोड को हाइलाइट करता है। – Ramnath

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