Как покрасить разные таблицы Rmarkdown в разные цвета
Ниже приведен код, который я использую. Единственная проблема заключается в том, что обе мои таблицы имеют одинаковый цвет, что является моим вторым цветовым кодом (#ffff99). Как я могу сохранить фон обеих таблиц разным.
<style>
table {
background-color:#eff8e5;
}
</style>
``` {r}
kable(df1)
```
<style>
table {
background-color:#ffff99;
}
</style>
``` {r}
kable(df2)
```
1 ответ
HTML/CSS не отображается так, как вы неявно предполагаете. Ваш код будет работать так, как ожидается, если рендеринг будет следовать такой процедуре
- набор: "столы зеленые"
- выходной зеленый стол
- набор: "столы желтые"
- выходной желтый стол
Но это не так. Что на самом деле происходит:
- установить: "все столы зеленые"
- выходная таблица 1
- (таблица 1 зеленая)
- установить: "все таблицы желтые"
- выходная таблица 2
- (таблица 1 и таблица 2 желтые)
В качестве решения вы можете использовать два разных класса:
<style>
.lightgreen {
background-color:#eff8e5;
}
.yellow {
background-color:#ffff99;
}
</style>
(Оптимально, имена классов должны описывать причину, по которой класс используется, а не то, как класс выглядит в настоящее время, но без дополнительной информации "светло-зеленые" и "желтые" являются лучшими именами, которые я придумал).
Теперь вам нужно сказать kable
что таблицы должны получить эти классы.
Опция 1:
kable(df1, format = "html", table.attr = "class=\"lightgreen\"")
kable(df2, format = "html", table.attr = "class=\"yellow\"")
Однако это лишает большую часть (вероятно желаемого) стандартного макета таблицы.
Вариант 2. Добавьте контейнер вокруг таблиц и таблиц стилей в этом контейнере.
<style>
.lightgreen table {
background-color:#eff8e5;
}
.yellow table {
background-color:#ffff99;
}
</style>
<div class = "lightgreen">
```{r}
library(knitr)
df1 <- data.frame(a=1:10, b=2:11)
kable(df1)
```
</div>
<div class = "yellow">
```{r}
df2 <- data.frame(a=1:10, b=2:11)
kable(df2)
```
</div>