Использование аргумента заголовка YAML в knitr
Я делаю набор слайдов, используя rmarkdown
и вариант LaTeX для вывода его в beamer
,
У меня есть два шаблона, которые я использую в своих слайдах - один для опций LaTeX и один шаблон pandoc, который я изменил, чтобы учесть некоторые дополнительные функции моих слайдов.
Я определил опцию в заголовке YAML под названием to_print
это логическое значение ИСТИНА / ЛОЖЬ, которое я передаю шаблону pandoc, который говорит ему добавить пакет и очистить слайды для печати.
Я также хочу использовать эту переменную для определения имени файлов. Основная идея в том, что я хочу иметь один .rmd
файл для моих слайдов, а затем просто изменив эту опцию, чтобы показать, что она предназначена для печати студентами, или для меня, чтобы представить.
Я понял, что могу передать render
функция с использованием knit
параметр в заголовке YAML, но я должен указать to_print = TRUE
и установите условие в ifelse()
утверждение в выходной_файл соответственно.
В настоящее время у меня есть:
---
title: "Introduction to R"
subtitle: "Reading and saving data in R"
date: '`r format(Sys.Date())`'
output:
beamer_presentation:
fonttheme: professionalfonts
highlight: tango
includes:
in_header: "../../templatefiles/beamer_header.tex"
template: "../../templatefiles/beamer_template.tex"
incremental: no
keep_tex: yes
slide_level: 3
theme: Warsaw
toc: yes
fontsize: 10pt
fontenc: T1
to_print: TRUE
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding,
output_file = file.path(ifelse(TRUE,
gsub("\\..*","_handout.pdf", inputFile),
gsub("\\..*", ".pdf", inputFile)))) })
---
Я хотел бы указать только один параметр, который затем используется для обозначения, если это раздаточный материал для печати:
Псевдо-код:
to_print: TRUE
knit: (function(inputFile, encoding) {rmarkdown::render(inputFile, encoding = encoding,
output_file = file.path(ifelse(YAML_PARAM$to_print,
gsub("\\..*","_handout.pdf", inputFile),
gsub("\\..*", ".pdf", inputFile)))) })
Это возможно, или что-то эквивалентное, что позволило бы мне иметь один .rmd
файл с логическим значением для переключения презентации и печати?
0 ответов
Вы можете использовать rmarkdown::yaml_front_matter()
функция:
---
title: "Introduction to R"
subtitle: "Reading and saving data in R"
date: '`r format(Sys.Date())`'
output:
beamer_presentation:
fonttheme: professionalfonts
highlight: tango
includes:
in_header: "../../templatefiles/beamer_header.tex"
template: "../../templatefiles/beamer_template.tex"
incremental: no
keep_tex: yes
slide_level: 3
theme: Warsaw
toc: yes
fontsize: 10pt
fontenc: T1
to_print: TRUE
knit: (function(inputFile, encoding) { rmarkdown::render(inputFile, encoding = encoding,
output_file = file.path(ifelse(rmarkdown::yaml_front_matter(inputFile)$to_print,
gsub("\\..*","_handout.pdf", inputFile),
gsub("\\..*", ".pdf", inputFile)))) })
---