如果您想包含一个独立 HTML 文件,将它包含在 in_header 中是一种非常糟糕的做法,before_body 或 after_body 或cat(readLines(...))。
为什么这是一种不好的做法?
独立 HTML 文件是一个带有标签的简单文本文件。最小的HTML 文件如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<!-- page content -->
</body>
</html>
要有效,HTML 文件必须符合许多约束条件。例如,只能有一个 <body> 元素。因此,如果您在另一个HTML 文档中包含独立 HTML 文档,您将获得一个带有两个<body> 元素的HTML 文件。所以,这是一个无效的HTML 文件。
这样的文件可能会在浏览器中被严重渲染(大多数浏览器尝试“理解”它,即使它是无效的)或者可能会导致它崩溃。因此,您必须选择一个产生有效 HTML 文件的解决方案。
我看到两个选项来呈现 有效 HTML 文件。
使用knitr子文档
请参阅有关子文档here 的文档。我认为这是最适合您的问题的解决方案。
在<iframe> 元素中包含外部HTML 文件
您可以在<iframe> element 中嵌入任何外部HTML 文件。这是一个可重现的示例。
假设您有以下名为embedded_file.Rmd的文件
---
title: "Embedded file"
output: html_document
---
This is the content of the embedded file.
这是main.Rmd文件的内容:
---
title: "Include external html file"
output: html_document
---
```{r generate-external-report, include=FALSE}
rmarkdown::render('embedded_file.Rmd')
```
External `HTML` file can be included in an `<iframe>` element:
```{r, echo=FALSE}
htmltools::tags$iframe(title = "My embedded document", src = "embedded_file.html")
```
当您渲染main.Rmd 时,您会得到一个带有嵌入文件的<iframe>。您必须设置<iframe> 的宽度和高度才能获得好看的<iframe>。