使用R Markdown 2和YAML为HTML文件自定义页脚

时间:2014-09-23 14:57:01

标签: r yaml r-markdown

使用R Markdown 2和YAML include语句,我可以使用in_headerbefore_body和{{}轻松自定义标题部分,正文部分的开头和结尾1}}分别如RMarkdown docu

中所述
after_body

如何为--- title: "Habits" output: html_document: includes: in_header: header.html before_body: doc_prefix.html after_body: doc_suffix.html --- 部分执行相同的操作? (输出应该是HTML)

类似的问题已被问及here PDF文件,还有另一个PDF here的答案。尽管如此,由于我对pandoc的了解太有限,我无法将解决方案转移到HTML页脚。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

这是一种使用R手动将HTML注入页脚的解决方法。在生成这些文档以获取自定义页脚之后,将其运行在我的所有文档中。仍然需要YAML-Pandoc解决方案。

library(stringr)
library(shiny)      # for HTML function

函数inject_code_after_body_tag将在HTML文件中读取并在最终正文标记后添加页脚部分。

inject_code_after_body_tag <- function(file, include) 
{
  file.lines <- readLines(file, warn = FALSE, encoding = "UTF-8")
  include.lines <- readLines(include, warn = FALSE, encoding = "UTF-8")
  inc <- HTML(paste(include.lines, collapse = "\r\n"))
  l <- str_replace(file.lines,
                   perl("(?<=</body>)"),
                   inc)
  HTML(paste(l, collapse = "\r\n"))
}

现在,读入文件并从footer.html注入代码

code <- inject_code_after_body_tag(file = "index.html", include = "include/footer.html")  

最后,将新代码写回index.html文件

writeLines(code, "index.html")