knitr_1.44版本HTML图片标题编号失效问题求助
解决knitr 1.44版本中bookdown图片标题丢失编号及格式问题
问题背景
将knitr从1.43升级到1.44后,使用bookdown::html_document2输出时出现以下问题:
- 图片标题丢失自动编号
- 标题无法右对齐
- 标题中的HTML标签被转义(不再正常渲染)
降级到knitr 1.43可临时解决,但需在1.44版本中恢复原有功能。
问题根源
knitr 1.44对图片标题的处理逻辑做了调整:
- 默认启用HTML转义,导致标题中的HTML标签被解析为纯文本,同时干扰了bookdown的编号注入逻辑
- 图片标题的生成结构发生变化,原有CSS样式无法匹配新的DOM结构
解决方案
1. 禁用HTML转义,恢复标题编号
在RMarkdown中添加全局设置,让knitr保留标题中的HTML内容,同时确保bookdown能正常注入编号:
在文档开头的设置代码块中添加:
knitr::opts_chunk$set(fig.cap.html = TRUE)
也可以针对单个代码块单独设置(无需全局配置):
```{r cars, fig.cap = htmltools::HTML("<b>An amazing plot</b>")} plot(cars)
### 2. 调整CSS恢复右对齐样式 由于knitr 1.44改变了图片标题的DOM结构,原有CSS不再生效,需更新样式: 将原有的样式部分修改为: ```css <style type="text/css"> body{ font-size: 11pt; } .tblCaptionBlue > caption{ color: blue; } .tblCaptionRed > caption{ color: red; } /* 新增:设置图片标题右对齐 */ .figure-caption { text-align: right; } </style>
完整修改后的RMarkdown示例
--- title: "My Title" subtitle: "Subtitle" author: "Me" date: "1/1/2016" output: bookdown::html_document2: toc: true toc_float: true toc_depth: 4 toc_collapsed: true number_sections: true keep_md: yes theme: flatly citation_package: biblatex header-includes: - \usepackage{amsmath} - \usepackage{extarrows} --- <style type="text/css"> body{ font-size: 11pt; } .tblCaptionBlue > caption{ color: blue; } .tblCaptionRed > caption{ color: red; } .figure-caption { text-align: right; } </style> ```{r setup, include=FALSE} knitr::opts_chunk$set(fig.cap.html = TRUE)
plot(cars)
## 验证效果 编译后图片标题将恢复自动编号,HTML标签正常渲染为加粗样式,同时标题右对齐生效。 内容的提问来源于stack exchange,提问作者jay.sf
相关产品推荐
相关产品推荐

