Я использую xaringan для создания презентаций и хотел бы настроить CSS для входных и выходных фрагментов R.
Первоначально я думал, что смогу использовать аргументы class.source
и class.output
из knitr
для установки классов CSS.
knitr::opts_chunk$set(class.source = "foobar",
class.output = "bg-warning")
Однако эти глобальные действия, похоже, не очень хорошо сочетаются с xaringen. Следующий минимальный пример
---
title: Change the chunk style
output:
xaringan::moon_reader
---
```{r}
knitr::opts_chunk$set(class.source = "foobar",
class.output = "bg-warning")
```
```{r}
mtcars[1:5, "mpg"]
```
производит следующий рендеринг
Если для вывода установлено значение htlm_document
, то все воспроизводится хорошо, но это не исправит ситуацию с презентацией ксарингана.
Эти параметры фрагмента не будут работать для харинган, потому что харинган использует синтаксис Markdown не от Pandoc, а comment.js. То есть они генерируют ```{.r .class}
, который работает только для Markdown от Pandoc. У меня нет времени поддерживать их в харинган, но если вы хотите добавить пул реквест на Github, вот место для начала: https://github.com/yihui/xaringan/blob/2ad2a6d/R/render.R#L195-L204 По сути, вы оборачиваете исходные/выходные строки символов внутри .class[]
, что является замечанием.js синтаксис для добавления классов к элементам.
Без патча вы можете применить имя класса только ко всему выводу и стилизовать блоки кода внутри класса, например,
---
title: Change the chunk style
output:
xaringan::moon_reader
---
```{css, echo=FALSE}
/* R code */
.foobar code.r {
font-weight: bold;
}
/* code without language names */
.foobar code[class = "remark-code"] {
display: block;
border: 1px solid red;
}
```
.foobar[
```{r}
mtcars[1:5, "mpg"]
```
]
Я подумаю над пиаром. Хотите, чтобы я поднял этот вопрос для обсуждения перед реализацией на странице github?
Нет нужды в проблеме. Вы можете начать PR напрямую, если сможете разобраться с реализацией. Спасибо!
Если вы пытаетесь изменить внешний вид своих фрагментов кода, возможно, это поможет! Этот тоже может помочь!