我希望以不同的颜色(例如红色)突出显示某个代码块,以表明这是不好的做法。如果我使用.Rnw
,我可以添加块选项background = 'red'
并获得我想要的内容,但这似乎不适用于.Rmd
。我的猜测是我需要制作一个自定义的css样式表(虽然选择器是什么,我不知道),也可能创建一个自定义钩子。我希望它基于每个块,而不是整个文档的整体更改。
答案 0 :(得分:28)
我们可以使用代码块标头中的class.source
选项为R Markdown提供自定义CSS。这在以下帖子中解释:
Add a CSS class to single code chunks in RMarkdown
综合一个例子,我可能会设置一个名为“badCode”的类,然后有一些CSS来改变你想要的背景。这是我的.Rmd
:
---
output: html_document
---
```{css}
.badCode {
background-color: red;
}
```
```{r mtcars}
summary(mtcars)
```
```{r cars, class.source="badCode"}
summary(cars)
```
答案 1 :(得分:27)
记住markdown支持代码块之外的HTML。
我会使用带有自定义类的div来包围代码块,该类可以根据我的需要设置样式。此示例将代码设置为蓝色,输出为浅蓝色
<style>
div.blue pre { background-color:lightblue; }
div.blue pre.r { background-color:blue; }
</style>
<div class = "blue">
```{r bluecars}
summary(cars)
```
</div>
```{r normal}
summary(cars)
```
答案 2 :(得分:7)
这个解决方案有点黑客,但它有效。它的要点是制作两个代码块,用唯一的类名交换{r}指示符。然后添加css代码来设置每个块的样式。
---
output: html_document
---
<style>
pre.bluecars {
background-color: #aabbff !important;
}
pre.redcars {
background-color: #ffbbbb !important;
}
</style>
## chunk-specific bg colors
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
- blue
```{bluecars}
summary(cars)
```
```{r, echo=FALSE}
summary(cars)
```
- normal
```{r}
summary(cars)
```
- red
```{redcars}
summary(cars)
```
```{r, echo=FALSE}
summary(cars)
```
答案 3 :(得分:2)
我发现了以下方法来对我编织为PDF的Rmarkdown文档中的块进行着色(编码):
使用pandoc高亮显示方案作为基础
pandoc --print-highlight-style pygments > my.theme
然后使用正则表达式设置所有主题
"text-color": null
然后,您可以将此属性更改为您喜欢的任何颜色(此处为浅灰色)
"background-color": "#f8f8f8"
在.Rmd文档的YAML中的“ pdf_document”下,放置以下内容
pandoc_args: --highlight-style=my.theme
对于我的用例,这就是我所需要的。
答案 4 :(得分:1)
您还可以使用以下示例:
```{css, echo = F}
h1 { color: rgb(255, 125, 0); }
h2 { color: brown; }
div.yellow pre { background-color: lightyellow; }
div.yellow pre.r { background-color: lightblue; }
.my_pink1 { background-color: pink; }
.my_pink2 { background-color: rgb(255, 113, 181); color: white; border: 3px solid blue; }
.my_span { background-color: orange; font-family: courier}
```
# 标题 1
## 标题 2
```{r yellow_cars1}
summary(cars)
```
```{r yellow_cars2, class.source = "my_pink1", class.output = "my_pink2"}
summary(cars)
```
Test: <span class = "my_span">change properties</span> \
Roses are $\color{red}{\text{beautiful red}}$,
violets are $\color{blue}{\text{lovely blue}}$.
阅读更多在
Changing chunk background color in RMarkdown
https://bookdown.org/yihui/rmarkdown-cookbook/chunk-styling.html
How to change the font color?