Edit: ta funkcja została wprowadzona w v.1.16 knitr (18.05.17)
class.source
i class.output
opcje dotyczą dodatkowych zajęć HTML do źródła i kawałki wyjściowe (patrz knitr documentation).
Aby dodać myClass
do źródłowego fragmencie:
```{r cars, class.source='myClass'}
summary(cars)
```
poprzedniej odpowiedzi, że zainspirowało opcje class.source
(patrz here)
Możesz dodać klasę używając jego rozszerzenie fenced_code_attributes
pandoc (która ma na celu dodanie atrybuty do znacznika <pre>
, patrz here) i knitr
output hook.
Poniższy przykład działa dobrze:
---
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)
```
Po dziania tego pliku .Rmd
dokument HTML
wygląda następująco:
<pre class="r myClass1 myClass2">
<code>
summary(cars)
</code>
</pre>
Rozszerzenie fenced_code_attributes
jest domyślnie włączona: w standardowych przypadkach nie musisz podawać linii md_extensions: +fenced_code_attributes
w nagłówku YAML
.
Nie wiem, czy istnieje bardziej proste rozwiązanie z użyciem knitr
.