如何让Rmarkdown github_document输出中knitr::kable表格标题居上
你遇到的这个现象是github_document格式的底层Pandoc渲染规则导致的:GFM(GitHub Flavored Markdown)默认会将表格标题移到表格下方,且默认不生成Table: 前缀,和knitr::kable本身的默认行为无关。
方案1:调整YAML输出配置(无额外包依赖)
修改Rmd文件的YAML头,开启GFM的表格标题扩展,同时搭配一个简单的Lua过滤器调整标题位置:
- 在Rmd同目录下新建名为
table-caption-top.lua的文件,内容如下:
function Table (tbl) if tbl.caption then -- 拼接Table前缀和原有标题 local cap_content = {pandoc.Str "Table: ", pandoc.Space()} vim.list_extend(cap_content, tbl.caption.long[1].content) -- 把标题放在表格上方返回 return {pandoc.Para(cap_content), tbl} end end
- 修改Rmd的YAML配置:
--- title: "Test" output: github_document: md_extensions: +table_captions pandoc_args: ["--lua-filter", "table-caption-top.lua"] ---
渲染后即可得到标题在上方、带Table: 前缀的表格。
方案2:使用kableExtra包直接指定标题位置(操作更简单)
如果可以安装额外包,直接用kableExtra::kbl强制指定标题位置即可,不需要修改配置文件:
- 先安装依赖包:
install.packages("kableExtra") - 修改表格生成代码:
library(kableExtra) kbl(mtcars, caption = "mtcars", format = "pipe", caption.position = "top")
这个方法输出的表格标题位置不会被Pandoc的默认规则覆盖,直接符合需求。
内容的提问来源于stack exchange,提问作者dufei
相关产品推荐
相关产品推荐

