2013-02-04 18 views
9

私は、RstudioのPerlとRを比較するマークダウン文書に取り組んでいます。 には、使用する言語によって異なるコードブロックの背景色があります。 例えばknitr/markdownのコードブロックの色を変更する

Rコードブロック

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

Perlコードブロック

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

上記のコードでknitr使用してHTMLファイルを生成した場合、r個のコードブロックがA有しますコードブロックからの出力が白/透明の背景を有する一方で、灰色の背景は灰色である。

しかし、Perlコードブロックと出力には、混乱するように見える白い/透明な背景があります。私の希望は、markdown/knitrでこれを行うエレガントな方法があるということです。

答えて

4

knit2htmlを実行するときにRコードを強調表示するためにRStudioにはjscssがバンドルされているだけです。 Rmdファイルに次のcssとjavascriptを含めることで、他の言語の構文強調表示を有効にすることができます。

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

これは、両方ともテーマcssによって制御されるため、これはまだ異なる背景の問題を解決しません。ただし、カスタムCSSを含めて出力の背景を変えることができます。

更新:

次の追加の行を追加すると、

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

この便利なポストをありがとう。リンクされていないスタイルシート**を**非Rコードのチャンクにのみ使用することが可能かどうか知っていますか?RStudioにバンドルされているRコードの強調表示は、 'highlight.js'よりも優れています。 –

4

私はそれが問題だと思います(私は淡黄色を選択しているが、必要に応じて、あなたはそれをカスタマイズすることができます)出力の背景色を調整するのに役立ちますRStudioの場合現時点では、RとC++の2つの言語(構文強調表示用)のみをサポートしているようです。おそらくあなたはそれらに機能要求を出すことができます。あるいは、Pandocのような他のツールでマークダウン出力をレンダリングすることもできます。またPerlの構文強調表示を行うGithubにmdファイルを置くこともできます。例028-engine-perl.md

+0

おかげさまで、私はrstudioのサポート担当者にお話ししました。 – iantist

7

私はYihuiの提案に従ってRstudioのサポートに話しました。

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

「のcustom.css」作業ディレクトリにある必要があります:彼らは、私は基本的に、次のRコードで自分のスタイルシートを使用するようにRを言うことができると指摘しました。 R studioのCSSシート(link)をダウンロードして修正するセクションを探しました。 Yihuiは、これが唯一RおよびC++のために色分けされたブロックをサポートする指摘したように、スタイルシート内のコード

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

のブロックがあります。次のように変更すると、perl: code.r、code.cpp、code.perl {background-color:#F8F8F8;} が含まれます。

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

RStudioによって挿入されたjavascriptはRコードとCPPコードのみを強調表示するため、このアプローチではまだPerlコードを強調表示しません。 – Ramnath

関連する問題