如何在Quarto reveal.js单句中设置多个脚注格式?
在reveal.js幻灯片里实现合并式多脚注引用(如[1-3])
需求
要给同一段文字添加多个脚注,最终显示成 test_1[1-3](上标格式),底部对应三个脚注条目,而非默认的多个独立上标数字。
当前问题
用标准脚注语法的两种写法都达不到预期效果:
- 连写式:
test_1[^1][^2][^3]→ 生成独立上标¹²³ - 空格分隔式:
test_1[^1] [^2] [^3]→ 生成带空格的¹ ² ³
解决办法
方法1:手动写HTML(快速上手)
直接用HTML自定义脚注引用和列表,完全控制显示样式:
--- title: "test" format: revealjs --- ## slide 3(实现期望效果) - test_1<sup>[1-3]</sup> <div class="footnotes"> <ol> <li>footnote1</li> <li>footnote2</li> <li>footnote3</li> </ol> </div>
如果想和reveal.js默认脚注风格统一,可添加一段自定义CSS:
sup { font-size: 0.7em; vertical-align: super; } .footnotes { margin-top: 2em; font-size: 0.8em; border-top: 1px solid #ccc; padding-top: 1em; } .footnotes ol { padding-left: 1.5em; margin: 0; }
方法2:用Quarto自定义过滤器(适配Markdown工作流)
想保留Markdown脚注语法的话,可编写Lua过滤器自动合并连续脚注引用:
- 创建
merge-footnotes.lua文件:
function Note(el) local refs = {} for _, note in ipairs(el.content) do table.insert(refs, note.attr.id:sub(3)) end if #refs >= 2 then local range = string.format("[%s-%s]", refs[1], refs[#refs]) return pandoc.Superscript(pandoc.Str(range)) end return el end
- 在Quarto文档中引用该过滤器:
--- title: "test" format: revealjs: filters: [merge-footnotes.lua] --- ## slide 3 - test_1[^1][^2][^3] [^1]: footnote1 [^2]: footnote2 [^3]: footnote3
这个过滤器会将连续的脚注引用自动转换为[1-3]的上标格式,同时底部脚注列表保持正常显示。
效果说明
两种方法都能实现:文字后显示合并的上标[1-3],幻灯片底部列出三个对应脚注,与期望效果一致。
内容的提问来源于stack exchange,提问作者TarJae
相关产品推荐
相关产品推荐

