如何在Asciidoctor PDF页眉中条件显示分卷与章节标题?
解决Asciidoctor PDF多卷书籍页眉条件渲染问题
Asciidoctor PDF的主题YAML本身不支持原生条件逻辑,你需要用ERB(Embedded Ruby)模板语法来实现动态判断,以下是正确的配置方式:
正确的主题YAML配置
在你的主题YAML文件中,找到页眉相关的配置项,替换成如下内容:
header: center: content: '<%= document.part_title ? "#{document.part_title} – #{document.section_title}" : document.section_title %>'
配置说明
- ERB的三元表达式会判断当前页面是否存在分卷标题:
- 如果
document.part_title有值(当前内容属于某个分卷),则拼接分卷标题与章节标题,用“–”分隔 - 如果
document.part_title为空(如前言、附录等无分卷内容),则仅显示章节标题
- 如果
- 必须用单引号包裹ERB代码,避免YAML解析时破坏模板结构
验证要点
- 确保使用Asciidoctor PDF 2.3.0及以上版本,旧版本对主题中的ERB支持有限
- 分卷需通过Asciidoc的
:part:属性定义,示例:= 第一卷:核心概念 :part: - 前言、附录等无分卷的内容,不要添加
:part:属性,确保document.part_title返回空值
内容的提问来源于stack exchange,提问作者flyx
相关产品推荐
相关产品推荐

