在编写技术文档时,我们经常会遇到需要根据文档结构设置不同层级的关键词的问题。今天我们来探讨一下在Asciidoc中如何实现这种分层关键词的管理。
背景
假设你有一个Asciidoc文档,其结构如下:
= 文章
:keywords: 关键词0
== 第一章
:keywords: 关键词1
== 第二章
{keywords}
在这里,我们希望{keywords}
在第二章中输出的是关键词0
,而不是从第一章继承的关键词1
。然而,默认的Asciidoctor.js Live Preview会显示关键词1
,因为Asciidoc的属性默认是全局的,不会自动根据文档结构进行隔离。
问题分析
Asciidoc本身的设计目标是简化文档撰写,而不是提供复杂的编程逻辑。因此,Asciidoc的属性系统并不具备根据文档结构进行作用域隔离的能力。这里遇到的挑战是如何在保持Asciidoc的简洁性同时,满足对文档属性的精细控制。
解决方案
使用自定义的Meta-Markup语言
一个有效的方法是引入一个