rbr*_*isk 6 knitr r-markdown dt bookdown
DT::datatable我正在尝试在 bookdown 项目中创建一个引用。
书籍手册规定(\#tab:label)应将其放置在表格标题的开头。_output.yml为了进行测试,我在 R-studio 中创建了一个新的 bookdown 项目,但用以下配置替换了内容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 表,则会有多个具有相同编号的表。或许可以将所有表格视为数字。然而,这不是标准方法。通常,表格和数字有单独的计数器。
此问题已在 GitHub 上报告:https ://github.com/rstudio/bookdown/issues/313
无法直接Table为内部书籍创建标题。DT:datatable
解释
HTML 小部件的行为与通常用于在 bookdown 中创建表格的命令DT:datatable不同。knitr:kable标题Table只会为kable生成的表格生成,而像这样的所有图像/图形/html 输出都不会作为表格标签,而是作为Figure.
附加问题
然而,您还缺少交叉引用的关键要求,如下所述:
“与图表一样,带有标题的表格也将被编号并可供参考。”
解决方法
最好的解决方法是将表视为图形,将 a 添加fig.cap到块标头并使用以下命令引用它\@ref(fig:chunk-name):
---
title: "Untitled"
output: bookdown::html_book
---
Table \@ref(fig:irisTab): Iris table
```{r irisTab, fig.cap="A table"}
DT::datatable(iris)
```
您将在包作者的bookdown书中看到这种方法:https: //bookdown.org/yihui/bookdown/html-widgets.html。如果对一辉来说足够好,那么对我来说也足够好。
| 归档时间: | 
 | 
| 查看次数: | 1148 次 | 
| 最近记录: |