Чтобы добиться этого, не слишком меняя рабочий процесс, можно создать собственный формат (например, html_notebook2
), который получен из оригинала, но модифицирует встроенный хук knitr.
Для начала вы можете проверить этот документ .
Основные шаги включают
- Создать новый пакет R
- В рамках этого проекта запустить
usethis::use_rmarkdown_template()
. Это создаст структуру папок для вашего нового формата.
- Редактировать
skeleton.rmd
и template.yaml
- Определите ваш формат в файле R с тем же именем
html_notebook2.R
(вид соглашения).
Содержимое файла html_notebook2.R
может быть
#'@import knitr
set_hooks <- function() {
default_hooks <- knit_hooks$get()
list(
inline = function(x) {
paste0("<span style=\"color: #FF0000;\">", x,"</span>")
})
}
#' @importFrom rmarkdown output_format knitr_options pandoc_options html_notebook
#' @export
html_notebook2 = function() {
output_format(
knitr = knitr_options(knit_hooks = set_hooks()),
pandoc = pandoc_options(to = "html"),
clean_supporting = FALSE,
base_format = html_notebook()
)
}
В первой части мы определяем новый встроенный хук, который только меняет цвет шрифта.
Вторая часть - определение нового формата.
После сборки и установки пакета вы можете создать новый документ rmarkdown и использовать output: packagename::html_notebook2
в качестве выходного формата. Весь вывод встроенного кода будет окрашен красным, используя мой код. Вот пример:
---
title: "Inline"
output: cformat::html_notebook2
---
## R Markdown
`r pi`
Я создал такой пакет, и вы можете найти его на GitHub . Не стесняйтесь копировать и переименовывать его (cformat
- довольно слабое рабочее название;)).
Заметьте, однако, что ваши ученики могут изменить цвет вручную, используя HTML / CSS в любом случае. Обходным путем может быть генерация ключей с использованием определенного правила (очевидно, неизвестного учащимся). Для каждого встроенного блока генерируется и внедряется ключ с использованием
paste0("<span code=", key," style=\"color: #FF0000;\">", x,"</span>")
Если введен правильный ключ, выходные данные были сгенерированы с использованием R, а не просто скопированы.