css - the - Cambio de color de fondo de trozo en RMarkdown
r markdown the definitive guide pdf (3)
Me gustaría tener un fragmento de código determinado resaltado en un color diferente (por ejemplo, rojo) para indicar que es una mala práctica. Si estaba usando .Rnw
, podría agregar la opción de fragmento background = ''red''
y obtener lo que quiero, pero esto no parece funcionar en .Rmd
. Supongo que necesito hacer una hoja de estilo css personalizada (aunque no sé cuál sería el selector), y tal vez también crear un gancho personalizado. Me gustaría que se realizara por trozos, no un cambio general para todo el documento.
Podemos usar la opción class.source
en el encabezado del fragmento de código para proporcionar CSS personalizado a R Markdown. Esto se explica en el siguiente post:
Agregue una clase CSS a fragmentos de código único en RMarkdown
Al juntar un ejemplo, podría establecer una clase llamada "badCode" y luego tener un poco de CSS para cambiar el fondo como desee. Aquí está mi .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)
```
Recuerde que markdown admite HTML fuera de los bloques de código.
Rodearía los fragmentos de código con un div con una clase personalizada que los diseñó como yo quería. Este ejemplo le da estilo al código en azul, la salida en azul claro.
<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)
```