我正在尝试在bookdown项目中创建对DT::datatable
的引用。
Bookdown手册指出(\#tab:label)
应放在表格标题的开头。为了测试,我在R-studio中创建了一个新的bookdown项目,但用以下_output.yml
配置替换了html_book
的内容(我只对HTML输出感兴趣)。
bookdown::html_book:
toc: yes
theme: null
highlight: pygments
split_by: none
然后我在01-intro.Rmd
的底部添加了以下代码。
```{r irisTab}
DT::datatable(iris, caption = '(\\#tab:irisTab) Iris table')
```
See Table \@ref(tab:irisTab).
我的期望是(\\#tab:irisTab)
将被Table 2.2
或至少2.2
取代,下面的引用将是2.2
。但是,这不起作用。标签保持逐字记录,引用为??
。
我最接近的方法是将标题文字放在桌子前面。
Table (\#tab:irisTab): Iris table
```{r irisTab}
DT::datatable(iris)
```
See Table \@ref(tab:irisTab).
在这种情况下,引用有效但标签(\#tab:irisTab)
在输出中保持逐字记录,即它不会按预期替换为2.2
。
有没有办法创建一个具有标题并可以引用的DT表?
更新1:@ mikey-harper建议使用fig.cap
。但是,fig.cap
仅更新fig
计数器,而不更新tab
计数器。因此,如果您有任何非DT表,则会有多个具有相同编号的表。可以将所有表格视为数字。但是,这不是一种标准方法。通常,表格和图形都有单独的计数器。
答案 0 :(得分:1)
此问题已在GitHub上报告:https://github.com/rstudio/bookdown/issues/313
直接在预订中为Table
创建DT:datatable
字幕是不可能的。
<强>解释强>
像<{1}}这样的HTML小部件与DT:datatable
命令的行为不同,后者通常用于在bookdown中创建表。只会为knitr:kable
生成的表生成Table
标题,而所有像这样的图像/图表/ html输出都不会是标签,而是kable
。
其他问题
但是,您也缺少交叉引用的关键要求as explained here:
&#34;与数字一样,带字幕的表格也会编号并可以参考。&#34;
解决方法强>
最佳解决方法是将表视为数字,将Figure
添加到块标头并使用fig.cap
引用它:
\@ref(fig:chunk-name)
您将在包装作者https://bookdown.org/yihui/bookdown/html-widgets.html的 bookdown 一书中看到此方法。如果它对于一晖来说足够好,对我来说已经足够了。