Переменная R как нижний колонтитул в Rmarkdown - PullRequest
1 голос
/ 01 июля 2019

Несмотря на множество вопросов на эту тему, я не могу найти именно то, что ищу.

У меня есть R-файл, подобный этому

calculation <- 2+6

footer <- sprintf("Nice footer: %s", calculation)

rmarkdown::render("My_Markdown.Rmd",output_format = "pdf_document", 
               output_file="myfile.pdf")

С My_Markdown.rmd:

---
output:
  pdf_document:
      number_section: yes
      toc: yes
      toc_depth: 4
      keep_tex: yes
      includes:
          in_header: header.tex
---

```{r, results='asis'}
cat(calculation)
```

Где header.tex загружает некоторые латексные пакеты.

Я бы хотел, чтобы нижний колонтитул был нижним колонтитулом на каждой странице PDF-файла.В этой связи я пробовал несколько вариантов (с или без "; в header.tex или отдельно в заголовочных включениях)

\pagestyle{fancy}
\fancyfoot[CO,CE]{`r footer`}
\fancyfoot[LE,RO]{\thepage}

Пока что ни один из них не работал.Кто-нибудь с решением?

1 Ответ

1 голос
/ 04 июля 2019

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

Поскольку файл R Markdown создается с использованием сценария, вы можете динамически создать файл header.tex, например:

calculation <- 2+6

footer <- sprintf("Nice footer: %s", calculation)

writeLines(sprintf(
'\\usepackage{fancyhdr}
\\pagestyle{fancy}
\\fancyfoot[CO,CE]{%s}
\\fancyfoot[LE,RO]{\\thepage}
', footer), "header.tex")


rmarkdown::render("My_Markdown.Rmd",
                  output_format = "pdf_document", 
                  output_file="myfile.pdf")

Не забудьте использоватьtwoside класс в вашем файле R Markdown:

---
output:
  pdf_document:
    number_section: yes
    toc: yes
    toc_depth: 4
    keep_tex: yes
    includes:
      in_header: header.tex
classoption: twoside
---

```{r, results='asis'}
cat(calculation)
```
...