ian*_*ist 10 r rstudio knitr r-markdown
我正在研究Rstudio中的降价文档,比较Perl和R.我希望能够做的是根据使用的语言有不同的代码块背景颜色.例如
R代码块
```{r}
dog <- 1
cat <- 2
dog + cat
```
Run Code Online (Sandbox Code Playgroud)
Perl代码块
```{r, engine='perl'}
$dog = 1;
$cat = 2;
print $dog + $cat;
```
Run Code Online (Sandbox Code Playgroud)
如果使用带有上述代码的knitr生成html文件,则r代码块具有纯灰色背景,而代码块的输出具有白色/透明背景.
但是,Perl代码块和输出具有白色/透明背景,看起来令人困惑.我希望在markdown/knitr中有一种优雅的方式来做到这一点.
根据Yihui的建议,我和Rstudio的支持人员交谈过.他们指出我基本上可以告诉R使用我自己的样式表和以下R代码:
options(rstudio.markdownToHTML =
function(inputFile, outputFile) {
require(markdown)
markdownToHTML(inputFile, outputFile, stylesheet='custom.css')
}
)
Run Code Online (Sandbox Code Playgroud)
'custom.css'必须在您的工作目录中.我下载了R studio的CSS表(链接)以查找要修改的部分.在样式表中有一段代码
code.r, code.cpp { background-color: #F8F8F8;}
Run Code Online (Sandbox Code Playgroud)
正如Yihui所指出的那样,它只支持R和C++的彩色编码块.快速更改以下内容包括perl:code.r,code.cpp,code.perl {background-color:#F8F8F8;}或者通过在code.r背景块下面添加以下内容来制作不同的颜色.
code.perl {
background-color: #B53389;
}
Run Code Online (Sandbox Code Playgroud)
发生这种情况的原因是 RStudio 仅捆绑js并css需要在运行时突出显示 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>
Run Code Online (Sandbox Code Playgroud)
这仍然没有解决不同背景的问题,因为两者都是由主题css控制的。不过,您可以包含自定义 CSS 来为输出提供不同的背景。
更新:
添加以下附加行将有助于调整输出背景颜色(我选择了浅黄色,但您可以根据需要自定义它)
<style>
pre code.bash {
background: lightyellow;
}
</style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7696 次 |
| 最近记录: |