R变量作为Rmarkdown中的页脚

时间:2019-07-01 13:50:32

标签: r-markdown knitr

尽管在这个问题上有很多问题,但我找不到想要的东西。

我有一个这样的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中或不使用““;在header.tex中或单独在header-includes中)
\pagestyle{fancy}
\fancyfoot[CO,CE]{`r footer`}
\fancyfoot[LE,RO]{\thepage}

到目前为止,没有一个有效。有解决方案的人吗?

2 个答案:

答案 0 :(得分:2)

在代码块之外添加您的乳胶代码并使用“r”传递变量

\fancyfoot[L]{`r variable_name`}

答案 1 :(得分:1)

将文件传递到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")

不要忘记在R Markdown文件中使用twoside类:

---
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)
```