我正在使用 Revealjs 在四开本中进行演示。我希望每张幻灯片都包含一个带有多个选项卡的面板选项卡集,每个选项卡都包含一个数据表。当我查看渲染的 HTML 文档时,多个数据表无法加载。具体来说,每个页面上的第一个选项卡将始终加载,第一张幻灯片上的所有选项卡也将始终加载,但其他选项卡似乎是随机加载和错过的。 HTML 源代码清楚地构建了数据表,它们只是没有加载。如果我刷新丢失数据表之一的选项卡上的 HTML 文档,它将显示出来(并且可能会使一些邻居也出现,但其他人会消失)。我已经在两个浏览器和两个操作系统平台上对此进行了测试,并且该行为仍然存在。
这是一个可重现的示例。渲染后,打开 HTML 输出并查看第 3 页上的选项卡 2 和 3,您应该明白我的意思。
---
format:
revealjs
execute:
echo: false
message: false
---
```{r}
#| label: load-packages
#| include: false
library(tidyverse)
library(DT)
options(dplyr.summarise.inform = FALSE)
```
# Data prep
```{r echo=TRUE}
dat1 <- diamonds %>%
group_by(cut) %>%
summarize(n = n(), price = round(mean(price), 2))
dat2 <- diamonds %>%
group_by(carat) %>%
summarize(n = n(), price = round(mean(price), 2))
dat3 <- diamonds %>%
group_by(clarity) %>%
summarize(n = n(), price = round(mean(price), 2))
```
## Page 1
::: panel-tabset
### Tab 1
```{r}
#| label: tab-1-1
datatable(dat1)
```
### Tab 2
```{r}
#| label: tab-1-2
datatable(dat2)
```
### Tab 3
```{r}
#| label: tab-1-3
datatable(dat3)
```
:::
## Page 2
::: panel-tabset
### Tab 1
```{r}
#| label: tab-2-1
datatable(dat3)
```
### Tab 2
```{r}
#| label: tab-2-2
datatable(dat1)
```
### Tab 3
```{r}
#| label: tab-2-3
datatable(dat2)
```
:::
## Page 3
::: panel-tabset
### Tab 1
```{r}
#| label: tab-3-1
datatable(dat3)
```
### Tab 2
```{r}
#| label: tab-3-2
datatable(dat1)
```
### Tab 3
```{r}
#| label: tab-3-3
datatable(dat2)
```
:::
嗯,我找到了问题的根源;为了将来遇到这个问题的其他人,回答我自己的问题。
根据 2016 年的此讨论,编写
DT
包是为了推迟渲染,直到表格可见。当我编译演示文稿,然后编辑“datatables.js”文档以注释掉第 73-76 行时,问题就消失了。
我将联系软件包作者解决这个问题,但考虑到这个问题已经在六年前提出但没有任何效果,所以可能不会有任何结果。作为短期修复,我克隆了包存储库并自己注释掉了这些行,并将其作为重命名的包加载到我的脚本中,其其他功能与DT
相同。