如何在带有`knitr::kable`的表格*上方添加标题?

Posted

技术标签:

【中文标题】如何在带有`knitr::kable`的表格*上方添加标题?【英文标题】:How to add a caption *above* a table with `knitr::kable`? 【发布时间】:2021-12-20 09:48:47 【问题描述】:

当我将一个简单的 Rmarkdown 文档呈现为 github_document 时,表格标题出现在表格下方而不是上方。它还缺少“表:”前缀。有没有办法改变这种行为?谢一辉has made clearkable的默认标题位置应该在表格上方,当我在Rmarkdown文件之外运行相同的命令时,标题确实出现在顶部。

我指的命令是

knitr::kable(mtcars, caption = "mtcars")

我的 Rmarkdown 文档如下所示:

---
title: "Test"
output: github_document
---

```r setup, include=FALSE
knitr::opts_chunk$set(echo = TRUE)
```

```r
knitr::kable(mtcars, caption = "mtcars")
```

指定format = "pipe"format = "simple" 似乎没有帮助。

【问题讨论】:

这已经发布,现在在github.com/yihui/knitr/issues/2074回复 【参考方案1】:

当转换为 Markdown 输出格式时,knitr::kable() 将默认为 format = "pipe"。这适用于 pandoc 的管道表。 format = "simple" 用于 Pandoc 的简单表。

这两种语法是 Pandoc 的 markdown 语法。 Pandoc 支持提供字幕 (https://pandoc.org/MANUAL.html#extension-table_captions)。

knitr 会为您编写:表格和标题采用预期格式。

但是,输出被定义为 Github Flavored Markdown,所以 Pandoc 的 gfm。这种 Markdown 风格不支持标题。因此,Pandoc 会将管道表转换为另一个 Markdown 表并抑制标题语法以将文本放置在表下方。这是 Pandoc 做的。

收下这个.md 文件

Table: Demonstration of pipe table syntax.

| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

进行 pandoc 转换将导致

❯ pandoc -t gfm test.md
| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|    12 | 12   | 12      |   12   |
|   123 | 123  | 123     |  123   |
|     1 | 1    | 1       |   1    |

Demonstration of pipe table syntax.

当输出为gfm时,Pandoc 将标题放在下方


问题也在https://github.com/yihui/knitr/issues/2074提出

【讨论】:

以上是关于如何在带有`knitr::kable`的表格*上方添加标题?的主要内容,如果未能解决你的问题,请参考以下文章

显式向 knitr::kable() 提供标签?

使用 knitr kable 函数对齐列

循环遍历 Rmarkdown 中的分组 id 列并呈现 PDF

如何在表格视图上方插入文本[关闭]

如何插入并引用带有章节号的题注?

删除插入分组 UITableView 上方的空间