使用
bookdown::pdf_document2
输出将 Rmarkdown 文件渲染为 pdf 时,在使用 gt
包渲染表格时如何获取带有 numbered标题的表格(例如表 1:标题)? 如果我使用
knitr
渲染表格,它会起作用,但不能使用 gt
。
我还在本书文档中看到了以下建议:
如果您决定使用其他 R 包来生成表格,则必须确保表格环境的标签以
的形式出现在表格标题的开头(同样,(\#label)
必须具有前缀label
)tab:
但是,这对我来说也不起作用。
这是重现问题的 Rmarkdown 文件的 MWE:
---
output: bookdown::pdf_document2
---
```{r, echo = FALSE}
gt::gt(head(iris)) |>
gt::tab_header("Iris data set using `gt`")
```
```{r, echo = FALSE}
gt::gt(head(iris)) |>
gt::tab_header("(\\#tab:label) Iris data set using `gt`, with special label")
```
```{r, echo = FALSE}
knitr::kable(head(iris), caption = "Iris data set using `kable`")
```
这是我当前的输出:
您遇到了rstudio/gt#818,当前使用
output: bookdown::pdf_document2
时无法直接获取编号字幕。但是,提供了一个解决方法(操作LaTeX
),它应该会产生您正在寻找的功能,请参阅下面的变体。您还可以像问题中描述的那样扩展它,例如获取参考资料。
---
output: bookdown::pdf_document2
---
```{r custom-function, echo = FALSE}
as_latex_with_caption <- function(gt, chunk_label) {
gt <- gt::as_latex(gt)
caption <- paste0(
"\\caption{", chunk_label, "\\label{tab:", chunk_label, "}}\\\\")
latex <- strsplit(gt[1], split = "\n")[[1]]
latex <- c(latex[1], caption, latex[-1])
latex <- paste(latex, collapse = "\n")
gt[1] <- latex
return(gt)
}
```
```{r, echo = FALSE}
gt::gt(head(iris)) |>
gt::tab_header("First Iris data set using `gt`") |>
as_latex_with_caption("Caption1")
```
```{r, echo = FALSE}
gt::gt(head(iris)) |>
gt::tab_header("Second Iris data set using `gt`") |>
as_latex_with_caption("Caption2")
```