Как основать имя выходного файла и подзаголовок на вводе пользователем с использованием параметров

Что работает

Я могу сделать подзаголовок моего PDF-файла динамическим на основе пользовательского ввода. Я также могу сгенерировать "полудинамическое" имя файла, используя поле субтитров из YAML (рабочий код приведен ниже)

Что не работает

Однако я не могу сделать и то, и другое, так как являюсь файлом субтитров и выходным файлом, основанным на вводе данных пользователем.

Поскольку rmarkdown::yaml_front_matter(inputFile)$title работает, я попытался использовать субтитр rmarkdown:: yaml_front_matter (inputFile) $, однако, похоже, он содержит неоцененный r-код.

Длинный выстрел был rmarkdown::yaml_front_matter(inputFile)$params$sub_title, но это привело к ошибке. Я не знаю, если параметры уже установлены и даже доступны с помощью этой функции.

Смежные вопросы

Код

---
params: 
  sub_title:
    input: text
    label: Sub Title
    value: 'my_Sub_Title_and_File_Name'
title    : "Parameterized_Title_and_output_file"
subtitle : "`r params$sub_title`"
output:
  pdf_document:
    keep_tex: false
knit: (
  function(inputFile, encoding) { 
    rmarkdown::render( 
      input       = inputFile, 
      encoding    = encoding, 
      params      = 'ask',
      output_file = file.path(
      paste0(rmarkdown::yaml_front_matter(inputFile)$title, '.pdf'))) })
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. ....

Приведенный выше код работает, так как он относится к заголовку статического поля yam.
Замена заголовка на субтитры не удастся, как и при использовании параметра $subtitle

ОБНОВЛЕНИЕ: лучший обходной путь (пока)

Сегодня я поиграл с крючком Knitr, не полностью понимая, как он работает, и наткнулся на уродливый обходной путь. Приведенная ниже кодировка, кажется, делает свое дело. Было бы хорошо, если бы кто-то мог объяснить, почему это работает, и / или если он может быть написан менее уродливо.

Пока я потерял блестящий экран ввода, но верю, что это можно добавить позже. Хорошо, что кнопка R-Studio Knit все еще может быть использована.

Обратите внимание, что подзаголовок и имя файла оба: это работает! даже с пробелом и восклицательным знаком. Файл сохраняется как This Works!.Pdf

Имя файла и субтитры устанавливаются путем назначения текста объекту pSubTitle. Обратите внимание, что параметры все еще находятся в YAML, но не приводят к блестящему всплывающему экрану, поскольку они назначены в крюке Knitr.

---
params: 
  sub_title:
    input: text
    label: Sub Title
    value: 'my_Sub_Title_and_File_Name'
title    : "Parameterized_Title_and_output_file"
subtitle : "`r params$sub_title`"
output:
  pdf_document:
    keep_tex: false
knit: (
  function(inputFile, encoding) { 

    pSubTitle <- 'This Works!'

    rmarkdown::render( 
      input       = inputFile, 
      encoding    = encoding, 
      params      = list(sub_title = pSubTitle),      
      output_file = pSubTitle) })
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

## R Markdown

This is an R Markdown document. ....

0 ответов

Другие вопросы по тегам