繁体   English   中英

在knitr / markdown中更改代码块颜色

[英]change code block color in knitr/markdown

我正在研究Rstudio中的降价文档,比较Perl和R.我希望能够做的是根据使用的语言有不同的代码块背景颜色。 例如

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中有一种优雅的方式来做到这一点。

根据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;
}

发生这种情况的原因是因为当你运行knit2html时,RStudio只捆绑了突出显示R代码所需的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>

我认为这是RStudio的一个问题。 目前,它似乎只支持两种语言(用于语法高亮) - R和C ++; 也许您可以向他们提交功能请求,或者您可以使用其他工具(如Pandoc)渲染您的markdown输出,或者只是将md文件放在Github上,它也会为Perl执行语法突出显示,例如028-engine-perl.md

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM