使用bookdown包引用“手工制作”的表格

21

我正试图使用bookdown包引用一个表格,在 表格文档 中,作者只展示了如何使用knitr::kable创建表格。

```{r table1}
knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE
)
```

表格 \@ref(tab:table1) 在此处。

使用 knitr::kable 很好用。表格标题被显示出来,我可以引用该表格。我想用传统的手写 markdown 表格做同样的事情,但很显然下面的代码失败了。我该怎么做才能得到类似于上面代码的结果呢?

```{r table2, echo=FALSE, results='asis'}
cat('| Sepal.Length| Sepal.Width| Petal.Length|
|------------:|-----------:|------------:|
|          5.1|         3.5|          1.4|
|          4.9|         3.0|          1.4|
|          4.7|         3.2|          1.3|
|          4.6|         3.1|          1.5|')
```

表格\@ref(tab:table2)在这里。

这张图片展示了代码编译后的输出结果。

This


请添加您正在使用的代码 - rawr
3个回答

19

我在文档中提到了它,但可能不够清楚。 我说你需要表单标签(\#tab:...)。 例如,您可以使用\@ref(tab:foo)来引用此表格。

Table: (\#tab:foo) Your table caption.

| Sepal.Length| Sepal.Width| Petal.Length|
|------------:|-----------:|------------:|
|          5.1|         3.5|          1.4|
|          4.9|         3.0|          1.4|
|          4.7|         3.2|          1.3|
|          4.6|         3.1|          1.5|

1
我发现我必须删除初始的“Table:”,并将我的标题放在HTML标记中才能使其工作:<caption>
(#tab:lable) 我的标题
</caption>
- vkehayas
2
对我来说,两个选项都不起作用。它会将 (#tab:label) 打印出来,就好像它是文本而不是代码。 - Santiago I. Hurtado
1
这个例子对我也不起作用。我在.pdf中得到了生成的表格,但是标题是"Table 4: (#tab:foo) Your table caption.",并且提示我可以使用"@ref(tab:foo)"来引用此表格。如果我使用@ref(tab:foo)进行交叉引用,则无法解决此问题。不确定如何解决这个问题 @yihui-xie - Christopher Kavazos

2

我有点晚加入讨论,但我想分享一个可行的 MWE(基于之前的答案):

```{r , echo=FALSE, results='asis'}
  cat(' Table: (\\#tab:mwe) Example

  | Sepal.Length| Sepal.Width| Petal.Length|
  |------------:|-----------:|------------:|
  |          5.1|         3.5|          1.4|
  |          4.9|         3.0|          1.4|
  |          4.7|         3.2|          1.3|
  |          4.6|         3.1|          1.5|')

```

表格 @ref(tab:table2) 显示...


对我来说无效。 它只是以一系列行的形式打印出表结构,并且不允许我进行交叉引用。 运行此程序时,您使用了哪些软件包? - Christopher Kavazos
嗨,Christopher,这很奇怪。在我的原始帖子中,```之前有一些额外的空格(复制粘贴错误),你删除了吗?我更新了我的帖子(以删除空格)并再次尝试。在R中使用开箱即用的默认“new bookdown project”设置,对我来说运行良好。我无法评论您的帖子,但您的帖子对我不起作用。表格打印得很好,但引用不起作用。 - Hans Henrik Sievertsen
也许是因为我在使用Linux操作系统? - Christopher Kavazos

1
我用以下方式解决了这个问题:

```{r table2 , echo=FALSE, results='asis'}
  cat(' Table: \\label{tab:table2}Example
  
  | Sepal.Length| Sepal.Width| Petal.Length|
  |------------:|-----------:|------------:|
  |          5.1|         3.5|          1.4|
  |          4.9|         3.0|          1.4|
  |          4.7|         3.2|          1.3|
  |          4.6|         3.1|          1.5|')
  
```

如果您编写文本并想引用表格,可以写成在表 \ref{tab:table2} 中显示结果

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接