与CSS的Knitr样式桌

时间:2014-06-17 01:41:34

标签: css r knitr r-markdown

我确信我忽略了一些显而易见的事情,但我想用自定义css格式化我的表格和kable

您可以找到我的RMDCSS个文件here的要点。

我的目标是利用我发现here的一些表CSS示例。

当我运行报告时,我的表格如下:

enter image description here

但是从上面的CSS示例中,它应该如下图所示。

enter image description here

我的问题:我错过了什么,或RMarkdown无法达到这种风格。

我的RMD文件也显示如下:

---
title: "Test Table CSS"
output: 
  html_document:
    theme: NULL
    style: flat-table.css
---

I want to be able to style my tables with CSS. From the looks of it, I should be able to do that 
through the use of `CSS` and `knitr:kable`.  


```{r setup, echo=FALSE}
data(mtcars)
mt_head = head(mtcars[, 1:5])
```

I want to be able to style my table just like one found [here](http://codepen.io/njessen/pen/naLCv)


```{r echo=FALSE, results='asis'}
library(knitr)
kable(mt_head, "html", table.attr='class="flat-table"')
```

3 个答案:

答案 0 :(得分:28)

如果您使用下面的.Rmd文件和修改过的CSS文件,您可以通过以下方式获得所需的结果:

knitr::knit2html('my-report.RMD', stylesheet = 'flat-table.css')

结果如下: enter image description here

以下是更新的 flat-table.css

.flat-table {
  display: block;
  font-family: sans-serif;
  -webkit-font-smoothing: antialiased;
  font-size: 115%;
  overflow: auto;
  width: auto;
}
  th {
    background-color: rgb(112, 196, 105);
    color: white;
    font-weight: normal;
    padding: 20px 30px;
    text-align: center;
  }
  td {
    background-color: rgb(238, 238, 238);
    color: rgb(111, 111, 111);
    padding: 20px 30px;
  }

答案 1 :(得分:0)

如果您只想进行少量自定义,则可以考虑including the CSS directly within the RMarkdown file。 Markdown将直接传递CSS,前提是它包含<style> </style>。这是一个完整的例子:

---
output: html_document
---

# Test Project

<style>
  .flat-table {
    display: block;
    font-family: sans-serif;
    -webkit-font-smoothing: antialiased;
    font-size: 115%;
    overflow: auto;
    width: auto;
  }
  thead {
    background-color: rgb(112, 196, 105);
    color: white;
    font-weight: normal;
    padding: 20px 30px;
    text-align: center;
  }
  tbody {
    background-color: rgb(238, 238, 238);
    color: rgb(111, 111, 111);
    padding: 20px 30px;
  }
</style>



```{r}
knitr::kable(mtcars[1:5, 1:5])
```

enter image description here

高级格式化

This guide提供了很多关于表格CSS样式的有用信息。你可以用几行CSS来实现一些很酷的东西。例如,您可以在Hover上突出显示表格的行:

tbody tr:hover {
  background: yellow;
}     

enter image description here

请注意,许多表格样式使用某种形式的JavaScript来使格式化工作,并且还可能进行影响文档其余部分的更改。您最好坚持使用theadtbody代码。

答案 2 :(得分:0)

请参见custom blocks

有用于添加属性的markdown语法。

::: {#id..class}
```{r showdata}
knitr::kable(yourtable)
```
:::

例如

::: {#table .table .table-bordered}
```{r showdata}
knitr::kable(cars)
```
:::