Это похоже на Xaringan выпуск № 29 . Я настраиваю шаблон Xaringan для использования на работе и хочу, чтобы все файлы CSS и Javascript находились в одном месте. Я не хочу, чтобы кто-либо копировал одни и те же файлы в каждый каталог презентаций.
Однако , я также не хочу ссылаться на общий корневой каталог. Я мог бы (я думаю) указать на наш внутренний сервер Bitbucket, но я бы предпочел, чтобы аналитики и ученые, работающие с данными, могли получать файлы из своего локального репо (для скорости, а также в случае, если они '). не находятся в сети или вносят свои изменения).
Я тоже не особо зациклен на использовании Infinite Moon Reader. (Это было частью проблемы № 29). Мне достаточно легко вспомнить, чтобы я нажимал Control+Shift+K
каждый раз, когда нажимаю Control+S
.
Я хотел просто включить параметр xaringan_dir
и использовать его в своих списках ресурсов CSS / JS.
На данный момент моей файловой структурой является мой каталог xaringan
, в котором у меня есть каталог css
для CSS, каталог js
для Javascript и company-xaringan-template.Rmd
. Это YAML работает:
---
title: 'This is a Title'
subtitle: 'This is a subtitle'
author: 'Benjamin Wolfe'
date: 'January 1, 2019 (revised `r Sys.Date()`)'
output:
xaringan::moon_reader:
css: [default, ./css/company-theme.css, ./css/company-theme-fonts.css, ./css/custom-classes.css]
lib_dir: libs
nature:
beforeInit: './js/macros.js'
highlightStyle: github
highlightLines: true
countIncrementalSlides: false
slideNumberFormat: '%current%'
ratio: '16:9'
---
Чтобы параметризовать мой YAML, я попробовал это:
---
title: 'This is a Title'
subtitle: 'This is a subtitle'
author: 'Benjamin Wolfe'
date: 'January 1, 2019 (revised `r Sys.Date()`)'
params:
xaringan_dir: '.'
output:
xaringan::moon_reader:
css: [`r paste(c('default', file.path(params$xaringan_dir, 'css', c('company-theme.css', 'company-theme-fonts.css', 'custom-classes.css'))), collapse = ', ')`]
lib_dir: libs
nature:
beforeInit: '`r file.path(params$xaringan_dir, "js", "macros.js")`'
highlightStyle: github
highlightLines: true
countIncrementalSlides: false
slideNumberFormat: '%current%'
ratio: '16:9'
---
Я знаю, что могу использовать параметры в моем YAML. Это работает, например:
---
title: 'This is a Title'
author: 'Benjamin Wolfe'
date: 'January 1, 2019 (revised `r Sys.Date()`)'
params:
xaringan_dir: '.'
foo_bar: 'This is a subtitle'
subtitle: '`r params$foo_bar`'
output: ...
---
А мои r
фрагменты работают сами по себе. Эти строки работают как положено:
params <- list()
params$xaringan_dir <- '.'
paste(c('default', file.path(params$xaringan_dir, 'css', c('esurance.css', 'esurance-fonts.css', 'custom-classes.css'))), collapse = ', ')
file.path(params$xaringan_dir, "js", "macros.js")
Но когда я запускаю свой параметризованный YAML, я получаю эту ошибку:
Error in yaml::yaml.load(..., eval.expr = TRUE) :
Scanner error: while scanning for the next token at line 9, column 11 found character that cannot start any token at line 9, column 11
Calls: <Anonymous> ... parse_yaml_front_matter -> yaml_load -> <Anonymous>
Execution halted
Дополнительные примечания:
- Если я использую мою исходную, не параметризованную строку
beforeInit
, с новой строкой css
, я получаю ту же ошибку.
- Если я использую мою исходную, не параметризованную строку
css
, с новой строкой beforeInit
, это приведет к вязке документа, но документ не будет отображаться в моем браузере.
Есть идеи? Можно ли это сделать? И / или я должен рассмотреть другой подход?