Quarto HTML文档超26张图时自定义子标题为aa/bb格式
解决Quarto超26张图时字母编号溢出问题
当Quarto用英文字母作为图的编号标识时,第27个会因ASCII序列溢出显示为{,要改成aa/bb这类重复字母格式,只需自定义crossref的编号规则,用Lua过滤器实现:
步骤1:创建Lua过滤器文件
新建repeat-alpha.lua文件,写入以下代码,实现类似Excel列名的字母编号逻辑:
-- 自定义重复字母编号格式(1→a,26→z,27→aa,28→ab...) quarto.utils.crossref.add_format("repeat-alpha", function(n) local result = "" while n > 0 do local remainder = (n - 1) % 26 result = string.char(97 + remainder) .. result n = math.floor((n - remainder) / 26) end return result end)
步骤2:配置Quarto文档
在文档YAML头部开启crossref并指定自定义编号格式,同时引用过滤器:
--- title: "多图编号测试" format: html crossref: fig-prefix: "图" # 可根据需求修改,留空则直接显示aa、bb fig-numbering: repeat-alpha filters: - repeat-alpha.lua ---
步骤3:动态生成测试图
用代码块批量生成超过26张图,验证编号:
library(ggplot2) # 动态生成28张图 for (i in 1:28) { ggplot(data.frame(x = 1:10, y = rnorm(10)), aes(x, y)) + geom_point() + labs(caption = paste("测试图", i)) }
渲染后,第27张图的编号会显示为图aa,第28张为图ab,完全替代默认的溢出字符{。
内容的提问来源于stack exchange,提问作者Eric Krantz
相关产品推荐
相关产品推荐

