Я хотел бы, чтобы определенный фрагмент кода был выделен другим цветом (например, красный), чтобы указать, что это плохая практика. Если бы я использовал .Rnw
, я мог бы добавить опцию chunk background = 'red'
и получить то, что хочу, но это не работает в .Rmd
. Я предполагаю, что мне нужно создать пользовательскую таблицу стилей CSS (хотя это был бы селектор, я не знаю) и, возможно, также создаю пользовательский крючок. Я бы хотел, чтобы это было на уровне каждого фрагмента, а не общее изменение для всего документа.
Изменение цвета фона фрагмента в RMarkdown
Ответ 1
Помните, что 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
Я сейчас пробовал это сам; это была моя отправная точка:
Добавить класс CSS в отдельные фрагменты кода в RMarkdown
Я могу установить класс под названием "badCode", а затем немного css, чтобы изменить фон, как вам может понравиться.
Здесь мой Rmd
---
title: Background color
output:
html_document:
css: badCode.css
---
```{r, include=FALSE}
knitr::knit_hooks$set(source = function(x, options) {
str_class <-
ifelse(
is.null(options$class),
"",
paste0(".", options$class, collapse = " ")
)
c(
paste0("```{.r ", str_class, "}\n"),
x,
"\n```"
)
})
```
```{r mtcars}
library("magrittr")
mtcars %>%
summary()
```
```{r cars, class="badCode"}
summary(cars)
```
Здесь badCode.css
:
.badCode {
background-color: red;
}
Я уверен, что это можно сделать более-чисто.
Ответ 3
Это решение немного взломанно, но оно работает. Суть его состоит в том, чтобы сделать два куска кода, заменив обозначение {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)
```