在 Rmarkdown 中使用 `gt` 包进行编号表并输出 pdf

问题描述 投票:0回答:1

使用

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`")
```

这是我当前的输出:

enter image description here

r pdf r-markdown bookdown gt
1个回答
0
投票

您遇到了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")
```

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.