10

Perl と R を比較する Rstudio のマークダウン ドキュメントに取り組んでいます。私ができるようにしたいのは、使用する言語に応じて異なるコード ブロックの背景色を使用することです。例えば

Rコードブロック

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

Perl コード ブロック

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

上記のコードで Knitr を使用して html ファイルを生成すると、コード ブロックからの出力の背景が白/透明であるのに対し、r コード ブロックの背景は灰色一色になります。

ただし、Perl コード ブロックと出力の背景は白/透明で、わかりにくくなっています。Markdown/knitr でこれを行うエレガントな方法があることを願っています。

4

3 に答える 3

7

Yihuiの提案に従って、Rstudioのサポートと話しました。彼らは、基本的に、次の R コードで独自のスタイル シートを使用するように R に指示できることを指摘しました。

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

「custom.css」は作業ディレクトリにある必要があります。R studio の CSS シート (リンク) をダウンロードして、変更するセクションを探しました。スタイルシート内にはコードブロックがあります

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

Yihui が指摘したように、これは R および C++ の色分けされたブロックのみをサポートします。次への簡単な変更には、perl が含まれます: code.r, code.cpp, code.perl { background-color: #F8F8F8;} または、code.r 背景ブロックの下に次を追加して、別の色を作成します。

code.perl {
background-color: #B53389;
}
于 2013-02-05T15:25:55.023 に答える
4

これが発生する理由は、RStudioはバンドルのみでありjscss実行時にRコードを強調表示する必要があるためですknit2html。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>
于 2013-02-04T23:15:43.567 に答える
4

それがRStudioの質問だと思います。現時点では、RとC ++の2つの言語のみをサポートしているようです(構文の強調表示用)。おそらく、機能リクエストを提出したり、Pandocなどの他のツールを使用してマークダウン出力をレンダリングしたり、Perlの構文強調表示を行うGithubにmdファイルを配置したりできます(例:028-engine-perl.md)

于 2013-02-04T23:16:10.340 に答える