Is it possible to add a CSS class to a certain code chunk?
Assume the following file:
---
title: "Untitled"
output: html_document
---
```{r cars}
summary(cars)
```
I want to give the chunk labeled 'cars' a certain CSS class, e.g. .myClass
.
Is there any possibility like
```{r cars} {.myClass}
summary(cars)
```
or so? I am aware of hacks like wrapping the whole chunk in another <div>
. I am interested in a straight forward solution.
You can insert an R code chunk either using the RStudio toolbar (the Insert button) or the keyboard shortcut Ctrl + Alt + I ( Cmd + Option + I on macOS).
Edit: this feature was introduced in knitr v.1.16 (05/18/17)class.source
and class.output
options apply additional HTML classes to source and output chunks (see knitr documentation).
To add myClass
to source chunk:
```{r cars, class.source='myClass'}
summary(cars)
```
Previous answer that inspired the class.source
options (see here)
You can add a class using the fenced_code_attributes
pandoc's extension (which is intended to add attributes to the <pre>
tag, see here) and a knitr
output hook.
The following example works fine:
---
title: "Untitled"
output:
html_document:
md_extensions: +fenced_code_attributes
---
```{r, include=FALSE}
knitr::knit_hooks$set(source = function(x, options) {
return(paste0(
"```{.r",
ifelse(is.null(options$class),
"",
paste0(" .", gsub(" ", " .", options$class))
),
"}\n",
x,
"\n```"
))
})
```
```{r cars, class="myClass1 myClass2"}
summary(cars)
```
After knitting this .Rmd
file, the HTML
document looks like this:
<pre class="r myClass1 myClass2">
<code>
summary(cars)
</code>
</pre>
The fenced_code_attributes
extension is enabled by default: in standard cases, you don't need to include the line md_extensions: +fenced_code_attributes
in your YAML
header.
I don't know if there's more straightforward solution using knitr
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With