gpt4 book ai didi

r-markdown - 在 bookdown 中交叉引用 DT::datatable

转载 作者:行者123 更新时间:2023-12-04 02:09:15 29 4
gpt4 key购买 nike

我正在尝试创建对 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 表,则会有多个具有相同编号的表。可以将所有表格都视为数字。但是,这不是标准方法。通常,表格和图形具有单独的计数器。

最佳答案

This issue has already been reported on GitHub: https://github.com/rstudio/bookdown/issues/313



创建 Table DT:datatable 的标题在 bookdown 内不能直接使用。

说明

HTML 小部件,如 DT:datatable行为与 knitr:kable 不同命令通常用于在 bookdown 中创建表。 Table标题只会为 kable 生成生成的表格,而所有像这样的图像/图形/html 输出不会被标记为表格,而是标记为 Figure .

附加问题

但是,您还缺少交叉引用的一个关键要求, as explained here :

"Like figures, tables with captions will also be numbered and can be referenced."



解决方法

最好的解决办法是把表格当成图形,加一个 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)
```

enter image description here

You will see this approach used in the bookdown book here by the package author: https://bookdown.org/yihui/bookdown/html-widgets.html. If it is good enough for Yihui, it is good enough for me.

关于r-markdown - 在 bookdown 中交叉引用 DT::datatable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49819892/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com