Mar*_*zer 15 css r knitr r-markdown
是否可以将CSS类添加到某个代码块?
假设以下文件:
---
title: "Untitled"
output: html_document
---
```{r cars}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)
我想给那些标记为'cars'的块一个CSS类,例如.myClass.有没有可能像
```{r cars} {.myClass}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)
或者?我知道黑客喜欢将整个块包裹在另一个块中<div>.我对一个直接的解决方案感兴趣.
RLe*_*sur 16
编辑:此功能是在knitr v.1.16(05/18/17)中引入的,
class.source并且class.output选项将其他HTML类应用于源和输出块(请参阅knitr文档).
要添加myClass到源块:
```{r cars, class.source='myClass'}
summary(cars)
```
Run Code Online (Sandbox Code Playgroud)
以前的答案启发了class.source选项(请参阅此处)
您可以使用fenced_code_attributespandoc的扩展(用于向<pre>标记添加属性,请参见此处)和knitr 输出挂钩添加类.
以下示例正常工作:
---
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)
```
Run Code Online (Sandbox Code Playgroud)
编织此.Rmd文件后,HTML文档如下所示:
<pre class="r myClass1 myClass2">
<code>
summary(cars)
</code>
</pre>
Run Code Online (Sandbox Code Playgroud)
该fenced_code_attributes扩展是默认启用:在标准情况下,你并不需要包括线md_extensions: +fenced_code_attributes在你的YAML头.
我不知道是否有更直接的解决方案knitr.