将 CSS class 添加到 RMarkdown 中的单个代码块
Add a CSS class to single code chunks in RMarkdown
是否可以在某个代码块中添加CSS class?
假设文件如下:
---
title: "Untitled"
output: html_document
---
```{r cars}
summary(cars)
```
我想给标记为 'cars' 的块指定 CSS class,例如.myClass
。
有没有可能像
```{r cars} {.myClass}
summary(cars)
```
左右?我知道一些黑客喜欢将整个块包装在另一个 <div>
中。我对直接的解决方案感兴趣。
编辑:此功能是在 knitr v.1.16 (05/18/17) 中引入的
class.source
和 class.output
选项将额外的 HTML classes 应用于源和输出块(参见 knitr documentation)。
添加 myClass
到源块:
```{r cars, class.source='myClass'}
summary(cars)
```
启发了 class.source
选项的上一个答案(参见 here)
您可以使用 fenced_code_attributes
pandoc 的扩展添加 class(旨在向 <pre>
标签添加属性,请参阅 here) and a knitr
output hook。
以下示例运行良好:
---
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)
```
编织这个 .Rmd
文件后,HTML
文件看起来像这样:
<pre class="r myClass1 myClass2">
<code>
summary(cars)
</code>
</pre>
默认启用 fenced_code_attributes
扩展:在标准情况下,您不需要在 YAML
[=53] 中包含行 md_extensions: +fenced_code_attributes
=].
我不知道是否有更直接的解决方案使用 knitr
。
是否可以在某个代码块中添加CSS class?
假设文件如下:
---
title: "Untitled"
output: html_document
---
```{r cars}
summary(cars)
```
我想给标记为 'cars' 的块指定 CSS class,例如.myClass
。
有没有可能像
```{r cars} {.myClass}
summary(cars)
```
左右?我知道一些黑客喜欢将整个块包装在另一个 <div>
中。我对直接的解决方案感兴趣。
编辑:此功能是在 knitr v.1.16 (05/18/17) 中引入的
class.source
和 class.output
选项将额外的 HTML classes 应用于源和输出块(参见 knitr documentation)。
添加 myClass
到源块:
```{r cars, class.source='myClass'}
summary(cars)
```
启发了 class.source
选项的上一个答案(参见 here)
您可以使用 fenced_code_attributes
pandoc 的扩展添加 class(旨在向 <pre>
标签添加属性,请参阅 here) and a knitr
output hook。
以下示例运行良好:
---
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)
```
编织这个 .Rmd
文件后,HTML
文件看起来像这样:
<pre class="r myClass1 myClass2">
<code>
summary(cars)
</code>
</pre>
默认启用 fenced_code_attributes
扩展:在标准情况下,您不需要在 YAML
[=53] 中包含行 md_extensions: +fenced_code_attributes
=].
我不知道是否有更直接的解决方案使用 knitr
。