PAYATHON 2026

Asciidoctor PDF 如何将脚注显示在引用页底部?

数据小许

结论

在题述环境中,footnote:[Content] 会按照 Asciidoctor 当前的实现集中输出为尾注。根据问题引用的官方说明,脚注的位置和编号需要通过自定义 converter 调整。现有资料没有表明 asciidoctor-pdf 2.3.19 支持仅靠主题 YAML 将脚注放到引用页底部。

因此,修改 theme.yml 无法直接实现这种分页效果。通常无需修改 Asciidoctor 或 Asciidoctor PDF 的上游源码,但要实现真正的页底脚注,需要编写并使用自定义 converter,也就是编写 Ruby 代码。如果不编写 converter,可以保留文末尾注,或将注释改为手动编写的普通正文内容;后一种方式无法保证注释出现在实际引用页的底部。

为什么主题配置不起作用

主题文件用于配置 PDF 外观。题目中的配置是:

extends: default
footnote:
disposition: page

官方说明将脚注位置和编号的定制归于自定义 converter,而非主题配置。即使把 YAML 改为嵌套形式:

extends: default
footnote:
  disposition: page

也不能据此认定该选项会生效。处理器必须支持并读取 footnote.disposition,这个版本的 asciidoctor-pdf 2.3.19 是否支持该配置,题目提供的资料没有说明。

可选方案

接受尾注

继续使用 footnote:[Content],让脚注集中出现在文档末尾。这是当前描述的默认行为,也不需要改变生成流程。

将注释作为普通文档内容维护

如果说明需要紧邻正文,可以在相关章节或段落附近手动添加,并作为普通内容排版。这样不会自动生成位于引用页底部的脚注;分页变化后,也需要人工检查位置。

编写自定义 converter

自定义 converter 可以用于实现页底脚注,无需修改处理器源码。实现时需要依据所用版本的 converter 扩展接口调整脚注的处理和输出,还要处理页面布局。脚注必须跟随引用所在页,而页面内容长度、脚注高度和分页彼此影响。

题目提供的资料没有包含该版本的 converter API 或实现示例,因此无法据此给出可直接运行的 Ruby 代码。应先查阅 asciidoctor-pdf 2.3.19 对应的 converter 扩展接口,再决定是否实现。未经版本核对的代码片段可能无法运行。

建议

如果无法维护 Ruby 扩展,可以保留尾注,或改用手动编写的正文说明。如果必须让脚注自动出现在引用页底部,就需要自定义 converter,并验证生成 PDF 时的分页和脚注布局。

备注:内容仅供参考。