2

我需要htmlwidgets在 RMarkdown 文档的循环中生成多个。这是使用htmltools::tagList. 以下代码段将生成 HTML 输出,其中包含 2 个 2 级标题和每个部分的数据表。唯一的问题是我指定了toc: true,但虽然tags$h2(headers[i])会在页面上呈现 2 级标题,但这些标题不会被目录拾取。有没有办法在 TOC 中获取这些标题?

---
output: 
  html_document:
    toc: true
---

## level 2 heading 0 - this one in TOC

```{r}
library(DT)
library(htmltools)

headers <- c("level 2 heading 1", "level 2 heading 2")
html_tags <- vector(mode = "list", length = 2*length(headers))
for (i in 1:length(headers)) {
  html_tags[[(2*i)-1]] <- tags$h2(headers[i])
  html_tags[[(2*i)]] <- list(list(datatable(iris)))
}

tagList(html_tags)
```

请注意,在下面的结果中,使用“##”生成的标题显示在目录中,但是来自tagList调用的标题虽然在文档中正确呈现,但现在在目录中。

在此处输入图像描述

4

1 回答 1

3

尝试这个:

---
output: 
  html_document:
    toc: true
---
```{r, echo=FALSE, message=FALSE, warning=FALSE}
library(DT)
library(htmltools)
```
```{r ,include = FALSE}
DT::datatable(iris)
```
## level 2 heading 0 - this one in TOC

```{r echo=FALSE, message=FALSE, warning=FALSE, results = 'asis'}
for (i in 1:2){
  cat("  \n## level 2 heading", i, "  \n")
   print(htmltools::tagList(DT::datatable(iris)))
  cat("  \n")
}
```

结果是:
在此处输入图像描述

也许这就是你真正想要的。

记住:你应该避免headers <- c("level 2 heading 1", "level 2 heading 2").
如果您需要数百或数千个标头,则效率不高,并且必须浪费太多时间。

于 2017-04-26T02:55:37.393 回答