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, eg .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.
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
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.