knitr编织为HTML时如何为图表与表格编号添加自定义前缀
R Markdown输出HTML格式时,要给图表、表格编号添加前缀(比如S)可按以下两种常用方案操作:
方案1:使用bookdown扩展输出(推荐,配置最简)
bookdown包封装的HTML输出格式原生支持图表自动编号和自定义前缀,和LaTeX输出的配置逻辑对齐,不需要额外写样式:
- 先修改Rmd文件头部的YAML输出配置,将原有的
rmarkdown::html_document替换为bookdown::html_document2,如果需要带章节的层级编号(比如S1.1、S2.3),开启number_sections: true即可:
--- title: "你的文档标题" output: bookdown::html_document2: number_sections: true # 可保留你原来的其他HTML输出配置,比如toc、theme等 ---
- 在文档开头的全局设置代码块中添加如下配置,即可把所有图、表编号前缀改为S:
knitr::opts_chunk$set(echo = TRUE) # 设置图编号前缀 options(bookdown.figure.label.prefix = "Figure S") # 设置表格编号前缀 options(bookdown.table.label.prefix = "Table S")
设置后生成的图表编号会展示为Figure S1.1、Table S1.1,和PDF输出的效果完全对齐。
方案2:原生HTML输出+CSS自定义(不依赖额外包)
如果你不想安装bookdown包,只用原生rmarkdown::html_document输出,可以直接在Rmd任意位置插入CSS代码块修改编号样式:
/* 初始化图、表计数器 */ body { counter-reset: fig-count 0 table-count 0; } /* 自定义图编号前缀 */ .figure-caption::before { counter-increment: fig-count; content: "Figure S" counter(fig-count) ". "; } /* 自定义表格编号前缀 */ table caption::before { counter-increment: table-count; content: "Table S" counter(table-count) ". "; } /* 如果原生生成的内容带默认编号,添加以下代码隐藏默认编号避免重复 */ .caption-number { display: none; }
内容的提问来源于stack exchange,提问作者cibr
相关产品推荐
相关产品推荐

