You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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对图片标题的处理逻辑做了调整:

  1. 默认启用HTML转义,导致标题中的HTML标签被解析为纯文本,同时干扰了bookdown的编号注入逻辑
  2. 图片标题的生成结构发生变化,原有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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:05:33