使用kable更改Rmarkdown中一个表的样式

时间:2014-12-04 13:25:28

标签: knitr r-markdown

我正在使用knitr和rmarkdown编写小插图,选择rmarkdown :: html_vignette样式。 我的大部分表都作为降价管表输入,但我使用kable()作为一个。

一般来说,我喜欢表的默认样式,但在一个特定的表中(有几个)我想抑制行的奇偶线阴影。

是否有一种简单的方法可以推翻CSS

table thead, table tr.even {
  background-color: #f7f7f7;
}

仅适用于kable生成的一个特定表格?

这是一个示例文件,两个表都有阴影。我只想要一个:

---
output: rmarkdown::html_vignette
---

This table should have alternate shading:
```{r output="asis"}
library(knitr)
kable(matrix(1:20, nrow=5))
```

How do I turn it off for just this one?
```{r output="asis"}
kable(matrix(1:20, nrow=5))
```

1 个答案:

答案 0 :(得分:3)

这是问题的部分答案。它很丑;我希望其他人做出更好的贡献。

一种解决方案是为特定的CSS id或类定义新样式,然后在<DIV id="newid"> </DIV><DIV class="newclass"> </DIV>中包装所需的表。据我所知,在调用kable()时无法做到这一点,因此需要直接将其放入文本中。

似乎样式本身也需要放在<STYLE></STYLE>块中的文本中。虽然标题允许您指定css,但据我所知,只能替换现有的样式文件,您无法添加它。

所以这是我丑陋的解决方案:

---
output: 
  rmarkdown::html_vignette
---

This table should have alternate shading:
```{r output="asis"}
library(knitr)
kable(matrix(1:20, nrow=5))
```

Define a style for class "nostripes", then wrap tables in a DIV with 
class "nostripes" to turn it off:


<style>
.nostripes tr.even {background-color: white;}
</style>
<div class="nostripes">
```{r output="asis"}
kable(matrix(1:20, nrow=5))
```
</div>