2015-04-28 49 views
7

के साथ बैश कोड हाइलाइट करना मैं RStudio, R Markdown और knitr का उपयोग कर एक HTML रिपोर्ट जेनरेट करने का प्रयास कर रहा हूं। रिपोर्ट में मैं कुछ bash कोड प्रदर्शित करना चाहता हूं। मैं कोड नहीं चलाऊंगा लेकिन मैं इसे हाइलाइट करना चाहता हूं।knitr/rmarkdown

इसका उल्लेख another question में किया गया है लेकिन सुझाव मेरे लिए काम नहीं करता है। यहां मैंने अभी तक कोशिश की है:

--- 
title: "bash highlighting?" 
output: html_document 
--- 
```{r, engine = 'bash', eval = FALSE} 
for foo in (ls bar) 
do 
    echo $foo 
done 
``` 

```{bash, eval = FALSE} 
for foo in (ls bar) 
do 
    echo $foo 
done 
``` 

इनमें से कोई भी मुझे HTML दस्तावेज़ में हाइलाइटिंग नहीं देता है। मुझे पता है कि यह संभव है क्योंकि मुझे इसे एक हफ्ते या उससे पहले कहीं याद रखना याद है, लेकिन मुझे अब और नहीं मिल रहा है! क्या कोई जानता है कि मैं इसे कैसे प्राप्त कर सकता हूं?

पढ़ने के लिए धन्यवाद,

टॉम

संपादित करें: मैं सिर्फ this answer, जो .Rmd

<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> 

इस में बैश कोड के लिए काम करता है में निम्न कोड ब्लॉक का उपयोग करने का सुझाव मिला दस्तावेज लेकिन आर कोड के लिए हाइलाइटिंग मारता है!

## R version 3.2.0 (2015-04-16) 
## Platform: x86_64-pc-linux-gnu (64-bit) 
## Running under: Ubuntu 14.04.2 LTS 
## 
## locale: 
## [1] LC_CTYPE=en_AU.UTF-8  LC_NUMERIC=C    
## [3] LC_TIME=en_AU.UTF-8  LC_COLLATE=en_AU.UTF-8  
## [5] LC_MONETARY=en_AU.UTF-8 LC_MESSAGES=en_AU.UTF-8 
## [7] LC_PAPER=en_AU.UTF-8  LC_NAME=C     
## [9] LC_ADDRESS=C    LC_TELEPHONE=C    
## [11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C  
## 
## attached base packages: 
## [1] stats  graphics grDevices utils  datasets methods base  
## 
## loaded via a namespace (and not attached): 
## [1] formatR_1.2  tools_3.2.0  htmltools_0.2.6 yaml_2.1.13  
## [5] rmarkdown_0.5.1 knitr_1.10  stringr_0.6.2 digest_0.6.8 
## [9] evaluate_0.7 
+0

[GitHub पर Yihui के उदाहरण] (http://yihui.name/knitr/demo/engines/) के बारे में, यह प्रतीत होता है GitHub renders एक (http [अपने आप ही भाषाओं की संख्या]: // stackoverflow.com/a/14697529/322912)। आप क्या कर सकते हैं अपनी खुद की [सीएसएस फ़ाइल] जोड़ें (http://stackoverflow.com/a/14710957/322912)। एक तीसरा विकल्प एमडी फाइल प्रस्तुत करना होगा उदाहरण के लिए pandoc। –

+0

पैंडोक का उपयोग करने के लिए, आप 'pandoc -s 027-engine-bash.md -t html -o bash.html' का उपयोग करेंगे, लेकिन असंख्य के लिए [demos] (http://pandoc.org/demos.html) देखें विकल्पों का –

+0

@Roman हां, मेरे प्रश्न में जो कोड जोड़ा गया वह 'light.js' के साथ एक सीएसएस फ़ाइल का उपयोग करता है। यह बहुत अच्छी तरह से काम करता है लेकिन 'light.js' से आर हाइलाइटिंग' RStudio' से हाइलाइटिंग के समान नहीं है। मुझे अब क्या करने की ज़रूरत है सीएसएस फ़ाइल केवल ** ** गैर-आर कोड खंडों पर लागू होती है। जवाब देने के लिए धन्यवाद। –

उत्तर

19

डिफ़ॉल्ट वाक्यविन्यास हाइलाइटिंग थीम गैर-आर कोड भाग के लिए अच्छी तरह से काम नहीं करती है, और आप अन्य विषयों का उपयोग कर सकते हैं, उदा। pygments

--- 
title: "Bash Highlighting" 
output: 
    html_document: 
    highlight: pygments 
--- 

```{r, engine = 'bash', eval = FALSE} 
for foo in (ls bar) 
do 
    echo $foo 
done 
``` 
+0

मेरे उत्तर से बहुत आसान है। 'डिफ़ॉल्ट थीम] (http://pandoc.org/README.html#general-writer- विकल्प)' pandoc' ** के लिए ** 'pygments' है, इसलिए मुझे लगता है कि मेरा केवल गूंगा भाग्य के माध्यम से काम करता है। –

2

ठीक है, टिप्पणियों के लिए धन्यवाद। ऐसा लगता है कि यह RStudio है जो हाइलाइटिंग के साथ अच्छा नहीं खेल रहा है। जब मैं in.md के रूप में मध्यवर्ती markdown फ़ाइल रखें:

--- 
title: "Bash Highlighting" 
output: 
    html_document: 
    keep_md: true 
--- 

```{r, engine = 'bash', eval = FALSE} 
for foo in (ls bar) 
do 
    echo $foo 
done 
``` 

तो pandoc का उपयोग कर उदा के साथ HTML में बदलने का BioConductor से सीएसएस:

pandoc -s in.md \ 
    -c https://hedgehog.fhcrc.org/bioconductor/branches/RELEASE_3_1/madman/Rpacks/BiocStyle/inst/resources/html/bioconductor.css \ 
    -t html -o out.html 

मैं R और bash के लिए प्रकाश डाला अच्छा कोड मिलता है।

धन्यवाद!