r语言 - 在word文档中用正确的表号对一个表进行交叉引用



我正在尝试使用bookdown包引用word文档中的表。

我想在代码块的fig.cap参数中添加引用id,但这在某种程度上没有被解释器看到,我没有得到指向引用的链接。

作为一种解决方法,我将我的参考ID添加到表的标题中,但这里完整的ID ({#mysecondtable2})写在图标题中,这看起来很难看。

你知道怎么解决这个问题吗?也许LUA过滤器可以从表标题中删除丑陋的锚?我不知道该怎么做。

---
title: "Untitled"
author: "Mario"
date: '2022-11-10'
output:
bookdown::word_document2:
toc: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## R Markdown
See Table @ref(tab:myfirsttable).  Or click [Table @ref(tab:mysecondtable)](#mysecondtable2). 
```{r myfirsttable, echo = FALSE}
knitr::kable(cars, caption = "First three rows of cars dataset")
```
See Table @ref(tab:mysecondtable).
```{r mysecondtable, echo = FALSE, fig.cap='{#mysecondtable2}'}
knitr::kable(head(iris, 3), 
caption='{#mysecondtable2} test')
```

编辑:

一些奇怪的行为表明,[Table @ref(tab:mysecondtable)](#mysecondtable)似乎起作用。但实际上它只引用了第二个表的标题,而忽略了末尾的2…

一个直接的解决方案是将表包装到一个额外的div中,这样就可以链接到那个div:

Or click [Table @ref(tab:mysecondtable)](#mysecondtable-wrapper).
::: {#mysecondtable-wrapper}
```{r mysecondtable, echo = FALSE}
knitr::kable(head(iris, 3),
caption='test')
```
:::

一个稍微不那么粗糙的方法是在标题中加入一个span:

knitr::kable(head(iris, 3),
caption='[test]{#mysecondtable}')

两者的区别在于,当使用div时链接将指向整个表,而当使用span时链接将指向标题。

最新更新