给 Chunk 添加新的 Class Name
普通代码高亮
根据https://stackoverflow.com/questions/37944197/add-a-css-class-to-single-code-chunks-in-rmarkdown的说明,Pandoc 的fenced_code_attributes
默认在 RMarkdown 中已经打开,因此不需要再添加md_extensions: +fenced_code_attributes
语句到 YAML 的html_document
之下;又根据 markdown-in-pandoc 中 6.2.3 的说明可知,在fenced_code_attributes
扩展启用的前提下,可以将下面的代码
```html
这是一个普通段落。
<table>
<tr>
<td>Foo</td>
</tr>
</table>
这是另一个普通段落。
```
修改成
```{.html .gray}
......
```
这样就可以达到添加新 Class 名称的目的。
R Chunk 中的代码高亮
推荐做法
根据https://github.com/yihui/knitr-examples/第 116 号示例以及 knitr 133 号问题的讨论,可以给 R Chunk 一个class.output
属性,如,class.output='myClass'
的方式添加一个输出样式类名称,如果需要多个,可以用,class.output=c("myclass1", "myclass2")
达到目的。
```{r df-drop-ok, class.source='bg-success', class.output='bg-success'}
mtcars[, "mpg", drop=FALSE]
```
不推荐做法
可以参考https://stackoverflow.com/questions/37944197/add-a-css-class-to-single-code-chunks-in-rmarkdown,这种做法一是不如谢给出的官方做法适用,另一个原因是只能针对 R 起作用,换言之,想要高亮的代码是 html 时,需要将其中的钩子函数中的.r
改成.html
,一旦这样,又会只能对 html 代码起作用,所以不推荐。
属性解释
不理解
class.source
和class.output
同时出现在第 116 号示例中,但目前不清楚其作用。